I've heard/read/seen both "look at" and "look to" (and "look up at" and "look up to").
Is there a difference between the two? When should I use one over the other?
The difference between the two phrases is that both can be used in the literal sense (to look in the specified direction), "look to" and "look up to" also have a figurative meaning.
The literal meaning:
Look at that, Henry's taking his first steps!
Look to your left and your right before crossing the street!
Look up at the sky, it's Superman!
Look up to your right, there's a green bird at the very top of that tree!
In all of these sentences, "look [x]" is being used to mean "look in the direction specified." This is the literal meaning of the phrases.
However "look to" and "look up to" also have figurative meanings. You can say you "look to" someone to find answers or advice, for example:
In her first few weeks on the job, Monica often looked to her boss for guidance.
This doesn't mean that she literally looked at him, but that she went to him for advice when necessary.
"Look up to" also has a figurative meaning. To look up to someone is to see them as a role model, or to view their behavior as a higher standard which you would like to achieve.
Tommy had always looked up to his baseball coach. He was tough but fair, and taught the team a lot. Tommy had wanted to be just like his coach when he was a kid.
Whether you use look at or look to is not determined by direction or purpose, but by the nature of what you are looking at or looking to.
Look at means to direct your gaze at specific objects or persons, whereas look to means to direct your gaze at something non-specific:
Look at the big grey elephant.
Look up at the stars.
Look at me, I'm Sandra Dee.
Look to your left and look to your right before crossing the road.
Sometimes look to and the other variants are used in connection with people or physical objects, but any such usage is idiomatic.
This example might illustrate the difference:
When I have tricky technical problems to solve, I look at StackOverflow.
When I have tricky technical problems to solve, I look to StackOverflow.
The look at example means: I browse the StackOverflow website.
The look to example means: I rely on the entire StackOverflow ecosystem, which includes the website but also includes the users, the culture, and so on.
To look at means to see something on purpose, that is, something that you actually want to see.
Thus, looking at you implies willingly turning my head towards you so that I can see you, while seeing you is almost unavoidable: if you are in my presence, I'll see you no matter what I do. But I won't be looking at you unless I want to.
To look to is another way of saying to count on someone. So, I'm looking to you for help means I'm counting on you for help.
Thus to look at and to look to mean two different things.
To look up at simply means to look at something that is in a higher position than you are. If you want to see a bird in the sky, you will have to look up at it.
To look up to means to respect, while to look down on means to disrespect.