Advice on where to perform certain game logic

Options
I'm using PUN in a Unity game top down multiplayer shooter. I have a question about where I should perform my logic. I have some situations listed below for specific events in my game that need to be synchronized and I'm wondering...

Should every client perform run this logic based on their synchronized state, or just the player who triggered it and then notify all other clients?

1. A player enters a trigger collider for an enemy which aggros them.
2. A player gets damaged.
3. A player dies.
4. An enemy fires their weapon.

There are various other examples, but these cover the major ones. I'm not able to come to the conclusion myself because there seems to be pros and cons to both. If every player runs the logic the gameplay is smoother, but a player's current state may be lagged and be inaccurate. If just the affected player performs the action you don't have to worry about the inaccurate state issue, but then you have delayed actions happening across clients.