1-3 would be achievable using Project Blue. You can control the player's ammunition via scripts after binding the weapon's ammo to a variable using a PB gunspec option. Number 2 would be scriptable using PB, and would probably have a lot of swapping out of weapons. I can see it working if you remove all weapons from the player and control their "weapon inventory" solely through variable sin a script, and when a weapon is selected, give that weapon to the player.
Number 3 is easy using PB. Bind the ammo of the weapons to the SAME variable, and they automatically share said ammunition.
As for number 4, not sure which sound it is you're talking about. Would have to see for myself.
Hope that helped you out at least a little bit.
The one and only,