This is where geometry nodes start to get a little more complicated. The round cyan connectors we've used so far pass geometry forward along the pipeline, but here we need to use the purple diamond connectors, which are called Fields. Fields are computed for each element individually, and can take complex input.
We're not doing anything super complex today. In the pic, we're using an Align Euler to Vector node, which aligns an axis to a given point. What point? Their position!
For a little extra credit, we can further tweak the rotation with the vector math node. By inserting it after the Align Euler to Vector, we can adjust the rotation coming out. Here, I've added a little extra rotation along each object's X axis. so they're now pointing up and out, while the animation shows what happens when we animate that property.
Caution: nodes don't pass rotation to each other in degrees of arc (i.e., 360 degrees), but rather in radians, where a full rotation is 2 Pi.
We're telling the node to align each instanced cube's Y-axis to its own position. Why does this work? Because that "position" is an arrow pointing away from the origin point... so we're actually telling the node to point our cubes away from the origin.
Here, I've made that a little more explicit with some very unsubtle models.