Haven't been on the forum in awhile and happened to be looking around and saw this. Not sure if you're still looking for info on this.. but i'm a big fan of romhacks, I found the biggest obstacle to be creating the gamelist. Getting a nice romhack list setup in ES or Launchbox takes a fair amount of manual effort.

Obviously none of the scrapers will scrape & create gamelists for you because their romhacks and there is no official list, but if you have romhack naming convention figured out how you like and have them all named, you can get a base XML created from Unviversal XML Scraper (https://github.com/Universal-Rom-Tools/Universal-XML-Scraper/releases) and go from there. I name my romhacks like this:
snes-romhacks-naming (1).png

In ES, I created separate "systems" for romhacks and even English translated roms if I felt there were enough to warrant it. to create the separate systems, I copied the system from the theme folder, renamed it and edited the theme.xml to replace the "ControllerOverlay" art & "logo2" art with a different image (both are normally the controller.svg file, I just a png image, which..mine doesn't line up perfect, but it's good enough for me) so when you're scrolling through you can differentiate between them easily.

You also need to edit the es_systems.cfg and copy the system you want, and rename the affected fields for that.
snes-romhacks-es_systems (1).png

So for SNES, I actually have 4 different systems in my Carbon ES theme folder, and in the ROMS folder:
snes
snes-hacks
snes-msu
snes-trans

For filling in the gamelist fields for each hack, I just kept it simple and did a description, I didn't worry about year/developer/etc. And I just used the box of the original game as the image, I didn't try to find screenshots or specific box art for romhacks. snes-romhacks-gamelist (1).png

As far as your question on patching, I can't really answer that, I pre-patch all romhacks, I'm not sure if emulators can do on-the-fly patching or not. Also compress roms as .zip, just normal compression rate, nothing crazy.

I'm sure there are easier/better ways to do some of this stuff, but this is what I came up with at the time. Hope this info is useful to someone.