I don't see where the problem is.
- Notifications: you can mark one as read without previewing it by clicking the X icon that shows up on hover. You can also mark it as read simply by clicking the notification, at which point it'll load the preview, and after the preview is loaded, the notification is internally marked as read. Reload the page and it's gone.
- PMs: as I said before, originally this worked the same way, but I realized that I never answered PMs before I forgot about them after being notified of them. I figured that notifications are okay to miss, but PMs should be answered, so this works differently, and it doesn't mark PMs as read automatically. If you want them marked read, just click the link to the PM itself. Voilà. The PM page loads, and the PM is marked read. You're free not to answer it, of course, but at least you can't tell me that I did my work incorrectly and that you 'missed' an important PM because of the notification popups.
- Notification types: you are notified when someone likes your post, when someone moves your topic, and when someone mentions you (only if the mentions plugin is installed, of course.)
- More notification types..? -- this isn't a priority of mine, but it's in my to-do-list. It's a fine line between getting notified of things that matter to you, and being burdened with having to read too many notifications (à la Facebook).
One thing I'm planning to do before stable is out, is to add a 'watchlist' table, where you can subscribe to a topic (you'll get notified on new replies to that topic), a board (you'll get notified on new topics), a user (you'll get notified on public actions they do, have to determine which), and perhaps other things. The only thing I'm missing is a proper discussion with you guys where we'd establish what type of data the watchlist could hold.