UPROPERY Object set to null by the engine during startup

All UPROPERTYs are serialized regardless of if they’re shown in the editor or not

Not sure what you mean by “created from a C++ that does not include the property”

If you have

UPROPERTY()
TObjectPtr<UMyClass> Component;

and then in the constructor

Component = CreateDefaultSubobject<UMyClass>(TEXT("Component"));

then this object will be created and serialized as expected on this class and all its children