Not only that, but lets say you have a tank, with its barrel and aiming component, but also a magnetic coil gun… or a laser turret… things like that.
A laser gun for example would work on a totally different principle. You might not use a suggestlaunchvelocity but just do a ray cast. Or you might have a missile that can do auto-homing. I.e. - no need to actually aim that precisely.
By Seperating the logic to the actual component you can later just replace the component without adjusting (much) of the main tank logic. Especially if you used inheritance by that point (I.e. you might make a UAimableStaticMeshComponent class that inherits from UStaticMeshComponent, and then create a TankBarrel & TankMissileLauncher class based on the UAimingStaticMeshComponent) you don’t need to change any code whatsoever - as long as the public interface is the same it’ll work if you do it right