Looking for a high level overview how to use OVRPlayerController with OnPhotonSerializeView

Options
Hi,
I'm trying to get the customhands associated with the OVRPlayerController seen across the network between players. There are a few scripts with examples but don't quite get what's going on.

The main issue I have is with creating a "avatar" - why can't OVRPLayerController itself just be the avatar?

I don't quite get why playerGlobal and playerLocal are being used eg.

playerGlobal = GameObject.Find("OVRPlayerController". transform (i'm guessing that's my own playercontroller that I will be sending out into the world).
playerLocal = playerGlobal.Find("OVRCameraRig/TrackingSpace/CenterEyeAnchor")

I don't quite get the point of playerLocal.

And in the OnPhotonSerializeView method I understand the stream.IsWriting part where i'm writing to the network.

I just don't quite get the reading in it.

eg. avatar.transform.position = (Vector3)stream.ReceiveNext();

Is this called for every avatar in the game?

Thx.