You will find answers to your questions right there Programming in the Unreal Engine Architecture | Unreal Engine 5.3 Documentation
Shortly:
- GameMode - single instance which runs only on server. You can setup spawn position, rules for players and etc.
- GameState - exists on server and can be replicated by players(General info that each player should have access to). Contains data like scores, position on map/board and etc
- PlayerController handles different players, not pawns. Pawns are puppets, which you can control with PlayerControl “Possess” ability. Each player gets own PlayerController instance, which responsible for input and etc.
- After you setup PlayerControllers you can get player number by simply GetPlayerController node, GetPlayerPawn and etc