I like Things for it's simplicity and syncing with the desktop client. However I recently moved over to OmniFocus because of the MobileMe syncing capabilities. If you're into GTD or need to start a GTD system, either of these will work exceptionally well.
I'm using Notify Me. It's super basic and does what I need.
I use my calendar for one-time events with a length and a specific time period I have to do it in that timeframe.
I use notify me for repeating items I don't have to do exactly when the alarm goes off and are items that I don't care if I see them going backwards. That way my calendar doesn't get cluttered with one-off or daily tasks.