I am looking for a scripting/code/api way to do a separate by loose parts and get a list of the resulting separated objects. There doesn't seem like there is a direct way to do this?
You can do bpy.ops.mesh.separate
then loop through all objects and check for new_obj.name.startswith(old_obj_name)
but that could select unwanted objects in certain scenarios. You could... make a collection, set it as the active collection, do the separate, and then get all objects in the collection? I'm not sure if that would work 100% of the time?