How to get same hair particles from collection in second particle system/ or how to delete instanced particles without converting them to real meshes?
Found a makeshift solution via Python: Get transform of Instances and the corresponding instanced mesh and create a new mesh in a separate collection with the transform and mesh data of the instance.

Converting all Particles to a real mesh wouldn’t be possible because of face-count but creating new meshes for only those particles in the area of the rb simulation is doable.

import bpy

context = bpy.context

dg = context.evaluated_depsgraph_get()

    # objects that are spawned from particle system via collection as source
obj_cube = bpy.data.objects['Cube']
obj_colum = bpy.data.objects['Colum']
obj_ico = bpy.data.objects['Icosphere']
    # empty collection to spawn the new meshes to
new_collection = bpy.data.collections['SecondInstances']

counter = 0
for i in dg.object_instances:
    obj = i.object
    print(obj.name)
        #filter all objects that are not instances by is_instence
    if not i.is_instance:
        print("not an instance")
    else:
        print(f"Instance of {obj.name} at {i.matrix_world}")
        counter += 1

        if obj.name == 'Cube':
                #create new object and keep data (also modifiers) from right source object 
            new_obj = obj_cube.copy()
            new_obj.data = obj_cube.data.copy()
            new_obj.animation_data_clear()
                #set new_object transform from instance transform
            new_obj.matrix_world = i.matrix_world
                #move to seperate collection
            new_collection.objects.link(new_obj)

        elif obj.name == 'Colum':
            new_obj = obj_colum.copy()
            new_obj.data = obj_colum.data.copy()
            new_obj.animation_data_clear()
            new_obj.matrix_world = i.matrix_world
            new_collection.objects.link(new_obj)

        elif obj.name == 'Icosphere':
            new_obj = obj_ico.copy()
            new_obj.data = obj_ico.data.copy()
            new_obj.animation_data_clear()
            new_obj.matrix_world = i.matrix_world
            new_collection.objects.link(new_obj)


I will keep the question open for now, because maybe there is a better way and having real meshes is not ideal either and could be optimized?