I think a good bit of reading up on what other scene graph technologies are doing would yield a lot of benefits for you.
For example, look at the Ogre3D description. It is a scene graph based graphics engine which is open source. I would suggest looking at the tutorials and see how scene nodes are being used (Note: I'm not telling you to learn how to use Ogre, rather what features are present in Ogre's scene nodes and scene managers)
Something else worth looking at is the following link:
It is an OpenGL based scene graph solution and the features page there shows all of the nodes that it can contain.
Your Suggested Nodes
I'm of the opinion that a scene graph should be as abstracted away as much as possible from the game logic so you don't have any dependency issues. For each of your bullet points I would say the following:
I'd probably say no. Similar to Ogre, I would have a base Entity class (which would contain the object specific logic) and a base SceneNode with an Entity member pointer to get the appropriate information to render the object (Position, Orientation, etc)
EDIT: I'm not saying to not include your game actors in the scene graph here (otherwise nothing would show up :P) I'm saying to have a scene node with a reference to the logical game actor class, so you've still got loose coupling of the rendering and updating of game objects.
Simple static game ojbects
No, this sounds like game specific logic to me.
Not completely certain about this one, but I'd probably say yes, but you'd probably want all bullets as children to a "BulletCollection" parent scene node, just so you can cache that position and you won't have to traverse the scene graph much to remove and add bullets to render.
Game Explosions and Special Effects?
Not certain, I'll let someone else answer that.
Scene Graph Coverage
If you have a relatively small level, you should be able to store the entire level in a scene graph and then optimize for visibility using an Octree (usually for outdoor environments) or a BSP tree (usually for indoor environments).
If you have a much larger level and you don't want to do any level loading, this is where streaming would come into play, but that's another issue entirely. I'd start out with a small level and incrementally see how large you can make it without adversely affecting performance.
To me a scene graph is for the Render portion of a game loop. You shouldn't couple your rendering and your logic updates too closely together, otherwise you're going to run into annoying dependency issues.