I can only comment on how i solved these issues for the bomberman clone. That doesn't say much about the quality of those solutions except that they do work. After all, this is my first real gameserver. Anyway, here we go:
1.- I fire them in front of the player, but depending on the animation, it may still collide with the mesh. Therefor, i set the player to invisible before checking its own bullets for collision.
2.- My server sends all known objects to all clients in each iteration. This works, because i don't have that much objects. The format in which i'm sending them is quite lean and i'm zipping it, so this hasn't been an issue so far.
3.- The clients determine which animation to play based on the object's state. Animations, explosions and that kind of stuff don't have to be in sync IMHO.
4.- Haven't done this yet, i'm already transfering an event to the clients to inform them about sound type and location. I'm just not playing any sound right now.
5.- My bullets live on all clients until the server stops transfering them. If they don't hit anything, they time out after some seconds...5 or something, IIRC.
6.- I'm violating the "never trust the client"-principle here and am doing these checks on the client that initialy created the object. However, i'm not doing the response directly but send an event to the server to inform him that something has hit something else. The server checks this by doing a rough distance check and if that passes, it sends the information back to all clients.
7.- No problem. You can simply wrap your stream into a GZIPOutputStream/GZIPInputStream. That's basically all that has to be done to zip the data.
8.- Each object carries the local object id as well as the client's id that the server gives it after login. Both in combination are unique. That way, it's always possible to identify which object belongs to which client and, if it was part of an event, you can simply get those two values to add it to the event, so that each client that receives the event knows, which object on whic client caused it. I have some helper methods to find a view representation for that object on each client.