Generally, object references are handled automatically in the UE4 multiplayer framework. What this means is, if you have a UObject property that is replicated, the reference to that object will be sent over the network as a special ID that is assigned by the server. This special ID is a FNetworkGUID. The server is in charge of assigning this ID, and then notifying all connected clients of this assignment.
To replicate object references, you simply mark a UObject property as replicated, like this:
class ENGINE_API AActor : public UObject
UPROPERTY( replicated )
AActor * Owner;
In this case, the "Owner" property will be a replicated reference to the actor that this property refers to.
For an object to be legally referenced over the network, it must be supported for networking. To check for this, you can call
UObject::IsSupportedForNetworking(). This is generally considered a low level function, so it's not common to need to check this in game code.
In general, these are the guidelines to go by to determine if you can reference an object over the network:
Any replicated actor can be replicated as a reference
Any non-replicated actor must be stably named (loaded directly from a package)
Any replicated component can be replicated as a reference
Any non-replicated component must be stably named.
All other UObjects (non actors or components) must come directly from loaded packages