Anything is own by server by default, only 1 player controller (PC) is owned by controlled client, so anything you SetOwner to this PC or any actor owned by PC is owned by client, anything not is server owned.
For GameInstance is not replicated, it different with each client and server.
The lot of lack in documentation, all this i learn when doing an actual project, by making everything from the scratch, then what you don’t know, you will learn on the way from answer hub, forum, from source code, from other project like Unreal Tournament.
If you want learn from the source code just about owner, just looking for SetOwner, to see where is called, and track more from there, no easy way though.