Everything is fine in your code, however, how do you display the crosshair and where is the camera?
Either the facing direction of your camera equals the facing direction of your weapon muzzle, or you will end up wih this scenario:
When the Camera and the Muzzle directions and locations are not equal, they’re vectors will only intersect at one location.

Here you see the problem third person aiming concludes: You have to guess where the player is aiming, most likely with a line trace and find the impact location, here: the enemy person. But theoretically, he could
have also tried to aim at this imaginary point closer to him that I tried to visualize with this pink circle. In that case, you see by the red line, he actually would have to hold his gun in a different angle, and the bullet would hit the container on the right, even though the aimed point (the crosshair) was on the same location on the screen.
So, either you align Camera and Muzzle, or you have to check what your player is aiming at, to visualize crosshairs
In your special case I assume that either you have the weapon on a lower loaction than the camera (camera position doesnt equal Muzzle Location), or very simple: Your bullets have gravity enabled (which is default in the ProjectileMovementComponent)