What's the correct way to use/initialize UObjects?

Objects are only loaded when referenced by something or a weakPtr try to load it.

All of your object tree must be “rooted”, that means be actively owned by any other loaded object that is a member of current game world.

Also the object class has different behavior depending on flags it has.
*RF_Archetype, RF_Transient, RF_Transactional *and RF_DefaultObject are flags that often cause weird behavior simply because programmers don’t know about them or why they’re there.