Where should stats go?

PlayerController only exist in Server and Owning Client, so PlayerState is used for replicate any thing PlayerController need to pass to all client (it like GameMode only exist on server, but to pass any information they use GameState), for example like Kill, or Dead stats you can store in PlayerState and replicate all client, on client you can check stat of all PlayerState and display on the scoreboard.

Any stats that is persistent as long as PlayerController is exist like Player Level, Kills, Assist, Score, Dead, you can store it in PlayerState.

The good thing is when you disconnect PlayerState will be put on Inactive PlayerState list, the moment you reconnect, it will check your UniqueNetId and pass the PlayerState back to you, so you can disconnect and resume play like in League Of Legend, will all stats intact.

For thing like character stat it can all decide by player level, weapon owned so no need to replicate that.