ULocalPlayer needed only for SplitScreen players? and APlayerState for remote network players?

As far as i understand i need to inherit ULocalPlayer only if i want to make Split Screen behavior?

If i need networking behavior for players i should inherit APlayerState?

Bonus question: what should i use for networked NPC State?

As far as i found out:

One ULocalPlayer created once per game, second ULocalPlayer created only if we use Coop-playing or Split Screen.
APlayerState created per each created GameMode, both for local and remote players.