There are alerts you can set. 2 to be exact. For appointments, I generally set one for an hour ahead of time, and one between 30- 15 minutes before the appointment. Haven't missed one yet.
When it comes to birthdays, I make 2 entries. One to remind me the day before, and one to remind me the day off. I used to make them all-day events, but that didn't work out so well, since getting notified means 2 hours before the event is 10 PM the night before.
With the stock calendar the answers are no and no. You can have a 1st and 2nd alert which I guess is like a mini snooze. There are 3rd party apps that may do what you want but they probably won't run in the background unless you jailbreak.
I can set them for up to 4 weeks in advance of an event using Google Calendar which can send alerts as pop-ups, SMS, and/or email for an event. I do not get the snooze option for these on the phone, only pop-up notice with option to view. The SMS notice does use the text sound effect you set though.
Thanks MrMike. Maybe soon you'll get sound as well as the pop up. It seems some 3rd party are beginning to run in the background. I got VoCal the other day and it sends audible alerts just like the alarm clock does. Shouldn't allowing VoCal background access open the door for other apps such as alarm clocks?
I probably should have suggested that you can receive reminders up to 4 weeks out but you can set the event to months, years in the future and set interval reminders. You could create intermediate events announcing to you that event X begins in 6 months, then another for the a 3 month heads-up, etc. ... just a thought ...