If you want a pawn reference as a direct variable of the object type, you could do “get player pawn” on “event begin play” and set your object to that. Then it becomes a reference to the actual pawn in the world. You may have to do a cast-> to the exact object type your pawn is.
You could also just do “get player pawn” every time you want to use it, but I prefer to do it ahead of time on begin play so that you can avoid having to cast all the time. Once you have stored the pre-cast object reference you get easy access to all the variables in the object.
The other case for making an object reference is when you want to pass a variable from one BP to another just once, but have the 2nd bp contain the live values of the 1st bp’s version of that variable without any further events.
If you wanted to do that, you would create an “object” blueprint that simply has a variable of the type you want to pass. Then in any BP that you want to contain that variable, you crate a new variable, the type would be the name of your object BP. then you do “set [variable name]” or “get [variable name]” etc to set the values.
Then in your functions that pass values, mark them “by reference” and then when you receive the object in the 2nd bp, you store it in an object variable of the same name as the object BP you created. Then whenever the object in BP 1 changes variable values, BP 2 now stores a reference to the same object. If you do the same thing with a regular variable, the value will remain the same as the initial state at the time of the event/set unless you keep passing updates which is slow.
I hope that made sense.
A common thing to do is to have an object that nicely packages information about something using either a bunch of variables or a struct of some kind. Then you can simply replicate the object which tidies up the replication.
Remember, anytime you rely on these pre-setup variable for core gameplay, it is a good idea to use a macro like “IsValid?” and print some very obvious string in case you somehow have a null pawn. That can save time when things go wrong.