For indicates the purpose or goal. At [time] or on [day] specify when.
These overlap, but native speakers go more by the sense than any grammatical differences.
- For someone's birthday means in order to celebrate the birthday
- On someone's birthday means it's on that date
Examples to illustrate the difference:
- I gave him a book for his birthday -- It's a gift to celebrate his birthday
- He has an exam on his birthday -- It happens to be on that day
- We are having a party for John's birthday, but his birthday is on a Monday and so we're having the party the Saturday before. -- Explaining it's a different day
To be somewhere for a particular time means to be ready to do something at that time. To be somewhere at a particular time means that's the time you arrive. For a doctor's appointment or a restaurant booking these are essentially the same thing. If you say to your friend "I need to be at the doctor for 9.00" you mean you want to be there ready to do something (see the doctor) at that time, and would be understood as wanting to get there perhaps 8.50 or 8.55.
In Britain it is rude to be early for social appointments, as well as rude to be late. Both in formal and informal situations you will see or hear "Come for dinner, seven for seven-thirty", which means dinner starts at 7.30, and you are supposed to arrive after seven. My advice for friends from punctual cultures is to arrive at 7.15. (Social rules about times are very dependent on cultures: this expression is British English only, as far as I know, and not used in North America.) Whole question on this phrase.
A business conference might well say "8.30 for 9.00 start" which means you can go as early as 8.30, have a coffee, take off your coat etc, and the first lecture would be at 9.00.