You want to use a UPROPERTY raw * when you want a Hard reference, which is one that stops the referenced object from being deleted. By making it a UPROPERTY the Garbage collection system will know about it and keep the reference alive.
You basically never want to have a raw * to a UObject that isn’t a UPROPERTY, because the GC system won’t know about it, and that raw * may end up getting corrupted