for my set up have have RomM running on my homelab alongside all the other *arrs containers. my homelab storage is where my complete collection is. RomM manages file naming and organization:
RomM's library is a local network accessible SMB share. For example these are some pokemon roms I have dumped with the Epilogue GB Operator.
I have my Launchbox instance running on a HTPC. I use "Link Shell Extension" to create a symlink between the gb folder on Network share and the Nintendo Game Boy folder in my launchbox directory. Launchbox media (box art, etc) is saved locally on my HTPC and i use Archive Cache Manager to automatically copy games from my network storage to my HTPC when a game launches.
There are other reasons i have it set up this way but that is more homelab stuff (offsite backup, integration with dedup scripting, internet accessibility, etc etc)
This solution works on my local network, but when away from my house I am not able to easily access everything with launchbox. I can go to romm.anatrok.me and download/upload individual roms while i'm on the go, but it would be nice to have that integration. Romm also has an API, but i wouldn't know where to start with writing a launchbox plugin. I can write the api calls if someone can write the launchbox dialogues that trigger them.
Totally hear you on liability which is why RomM is a selfhosted solution. This is completely safe territory. RomM is a web front end that contains no roms out of the box. You add roms to the server no different from adding roms to launchbox folders. It doesn't make a difference if it's over the internet. If romm was unauthenticated and public romm instances started popping up all over the internet maybe it would start coming under scrutiny. Thankfully this isn't the case and RomM doesn't even allow you to disable authentication or enable a guest account. The use case for RomM is private libraries to share with friends and family...it's not like archive.org hahaha.