Apparently I'm the only one noticing questions in the question. :)
If the other person is not you, it gives him 15 reputation, and you 2 reputation. Otherwise, 0.
As said above, you gain 2 reputation points. Additionally, if you don't have editing privileges, you'll have to suggest the edit, and if it is accepted it'll be another 2 rep for you.
Reputation is primarily "given" by bounties.
Upvotes are also a way to award some reputation, but it has a visibility impact. If you can't give a bounty for an answer but you really want to, arguably, you could look up the users' top-voted questions and answers and give some upvotes. A post with high vote-count is usually deserving of these votes (at least on this site), that's why I believe it is arguably acceptable. It is abusing the voting feature, technically.
Accepting an answer has the effect of making it the first visible answer in a thread. This should not be used merely for giving reputation to a user.
About politeness, opinions vary as you may have seen in the comments. I have chosen option 2 several times, on sites where I didn't have edit privileges, and my edits were welcomed every time. In my opinion, you're giving the answerer two favors: you upvote and accept his answer (immediate rep benefit + high visibility => more upvotes) and you improve on his answer (higher quality => more upvotes).
You should probably leave a comment explaining the modifications, and maybe suggest that the answerer includes them himself if he prefers to. And in any case, I suggest that you clearly mark the editted part as such.
But you shouldn't be ashamed of choosing option 1 instead, if the modifications are so drastic that the edit would change the whole answer. In other words, if your edit would be writing a new answer, write a new answer instead. But if the modifications are just about filling some blanks in the process, showing the complete code or answering some doubts formulated in the answer, commenting and/or editting is probably the way to go.