To make it easy to understand, you can imagine how the game works like a giant 3D Battleship system.
The features regarding the game like the maps ()what you see, the sounds, the skins, are located on your computer.
The server job is to manage all the information he receive and he send you the results.
Can it be a 100% real time job? Of course not, because the players have all different pings.
That means if you shoot a player running at a specific position and seems nothing is happening, it's because the delay caused by the ping, the server don't see the target at the same XYZ position than where you're shooting.
With that in mind, you will probably be able easily to kill someone in close combat, camping or coming in your direction in straight line . But it won't be the case for someone who move all the time.
Is there a way to deal with that situation? The answer is yes and many experienced players know what to do.
All you need to do is to anticipate in which direction your ennemy will move and where he will be in, for example 200 ms.
This is useful especially in case of big maps like Destroyed Village.