Have you just snipped out code that didn’t seem relevant? Your ‘bundlesToLoad’ is empty which will load “no bundles”, not “all bundles”. If you add the strings “Scene” and “UI” to that array it should start doing what you’re expecting.
It’s really hard to give advice here since only you really know the access patterns to your data, but:
Yes, your data asset could hold raw pointers to the properties. If it did they should be loaded asynchronously if you load the asset asynchronously. The downside is that you would be unable to load a CharacterDescriptor without also loading those referenced assets.
Yes, you could hold a raw pointer to the data asset. It would then be loaded along with whatever was referencing it (which may or may not be desirable). You would then have to use UAssetManager::ChangeBundleStateForPrimaryAssets when you wanted wanted to load or unload the Descriptors soft references.