I'm currently working through a set of very similar problems so I've been giving this topic a lot of thought.
1) I see 0 benefit in displaying a list of "Read" notifications when notifying the user of new activity/events is the intent here. I'd focus solely on "Unread" notifications and have a control that can let the user access older "Read" notifications if they're interested in this data. For recently read notifications, consider leaving them on the list for a period of time, but indicating that they've been read.
2) Since you're notifying the user of new events, this is the more sensible option. It's also very helpful to know how many items I have remaining to go through.
One thing you'll find very helpful if you use Gmail is the "Mark all as read" feature. It's very useful to be able to clear out a large list of information particularly if it's the type of activity that builds up quickly. Another reason to consider this feature is if the events aren't "mission critical". For instance, Knowing that I have 12 Unread email messages is important. It's equally important that you notify me of how many I have remaining to read. Knowing that 16 people shared my blog post is great, but it probably doesn't make sense to force me to review each one of those activities before the counter drops to 0. If I read that I had 16 shares, thats probably enough engagement for the counter to drop to 0.
3) This is also very useful.
Strategically mixing options 2 and 3 could make for a very useful notifications system. But ultimately the requirements should be data driven.
The things to think about:
- What type of information am I notifying the user about?
- Is this information Mission critical, or Business critical?
- If neither, how important is this information to the user?
- What is the frequency of event notifications?
- If its a large amount of events, can it be distilled or summarized without losing its essential meaning?
I'd also avoid option 1. :)