In case of a laserbeam (single object, created/released rarely), taking a new object each time pulling the trigger is feasable.
On the other end of a spectrum - when firing with a particle system that consists of hundreds of particles .... better pool them together bc. creation might get expensive and the memory footprint is SO big, that you cannot assign one to all of your weapons.
Somewhere in between are the FlyingGuns
cannonshots (12 cylinders) e.g.. They are created in a lazy manner an then are assigned to the weapon and kept there. When firing, they are just attached to the scenegraph.
So look for a tradeoff!