Question about UClass

I think you’re confusing UObjects and Actors. Actors exist in the game world, UObjects do not necessarily. All actors are UObjects, but not all UObjects are actors. (The inheritance chain for actors is UObject -> AActor -> MyActor.)
An example UObject is a sound wave. You can’t place a sound wave in the world (instead you need e.g. a sound cue that uses it), but you can view it in the asset browser. This is possible due to being a UObject based asset that is automatically serialized on load and save. So actually UObject does sound like what you need.

The first one is close to what you want, but not quite. You want to inherit from UObject instead of UClass (and leave out the ENGINE_API as well as that may be causing problems too, it’s not intended or needed for gameplay code).