I would rather suggest you use a func_physbox with a thruster on the back of it than using trigger_push. At least I’ve had better experiences using thrusters instead of trigger_push.
As for the explosion, you might just as well want to parent an env_explosion to the physbox. It has a lot more options to fiddle around with to get the desired explosion. The physbox would basically trigger the explosion once it breaks.
As for launching the projectile relative to the guns orientation, you can use a trigger_teleport to move the projectile into the gun barrel. Just let the projectile get spawned anywhere BUT inside the gun, that might cause funky physics if the gun is turned around.
Now if you want to use the projectile multiple times, simply make a point_template which spawns the projectile, the thruster and the explosion.
And the last point, having multiple of these guns in the map. There is quite an easy and quick way of doing that: just select ALL components of the gun, that includes the entities that make up the gun and the projectile. Then simply “copy” it and right click on the selected entities in one of the 2d views. Then choose “paste special” instead of just “paste”.
paste special has the neat little ability of making a clone of your entities (it also fixes the entities’ outputs/inputs, so you don’t have to fix those).