There are ways to optimize/interpolate/predict things, however they are rather complex and probably not something one would do with blueprints on beginner level. Writing a Tutorial for this is beyond my scope.
However I think for firing your gun you shouldn’t really have the need to spend many resources on something that works quite OK the way it is. The Gameplay issues you have are probably related because you don’t create the projectile on the server only. Just create it on the server and you should be fine (generally important gamelogic should always be calculated on the server #desync #cheating).
Let’s assume you have a delay of 100 ms, when you spawn the projectile on the server, the client projectile will be 100ms behind. And when the Server registers a hit, it will again be about 100ms until this message is sent to the Client - so in generally it does “seem” to be happening the same time.
Regarding your particle effect, this is probably again related to how you handle things. Calculating the important game logic on the server and multicasting visual effects like your particles should fix this aswell.