The summary.
THE SERVER DECIDES; THE CLIENT REQUESTS AND DISPLAYS
If a client determines outcomes, those outcomes can be falsified. Validate movement against possible speed, actions against cooldowns, results against server state.
The only reliable defence against information cheating is not sending the information.
LATENCY CANNOT BE ELIMINATED, ONLY HIDDEN
Client prediction makes your own actions immediate, interpolation makes others smooth, and lag compensation makes hits fair — which is why being hit behind cover is the correct outcome of two views differing.
TEST WITH SIMULATED LATENCY, LOSS AND JITTER
Local testing has none of them, and every networking problem appears only with them.
SEND POSITIONS UNRELIABLY AND EVENTS RELIABLY
A newer position supersedes a lost one; a lost death does not.
Relevance filtering bounds bandwidth regardless of player count, and prevents clients receiving data they could exploit.
SERVER COSTS CONTINUE AFTER PURCHASE REVENUE STOPS
Establish whether you can sustain them for the game's lifetime before committing to multiplayer at all.