Laura's answer is good, but it might help to have some examples. "Aim at" is usually more literal: you aim at a real object, like a target, in order to hit it. "Aim for" can also be literal, but it more often means that you want to achieve something, like a goal or a good outcome.
You can aim a gun *at* something. If you're playing basketball, you can aim the ball *at* the hoop before you throw it.
You can "aim for" a better grade in your class. You can "aim for" a promotion at work. You can "aim for" success.