I tried to reproduce the issue, but I don't seem to be able to. Using the same emulator (lr-mgba), with or without the BIOS, the save file is loaded correctly.
Can you check if you have enough space available on your USB ? The save file (in-game saves) is stored next to the ROM, it's named <ROMNAME>.srm, if you don't see one, then the emulator cannot save the file.
How are you mounting the USB stick to the system ? Did you follow the docs or did you do it manually ?
@mattrixk Going over the history of this I would say the best first Pokemon game I ever played was Crystal, I played and beat yellow before Crystal but Crystal had the held items in addition to 2 newer types
also bug type Pokemon while they existed in the previous gen, they weren't as weak in gen 2 and they had better attacks like Fury Cutter and Megahorn so the gen 2 games were far more balanced, and they didn't have as many exploits if any either.
I don't know the full extent of the problem, but it seems like you could create a script that would first launch RetroArch and then after a wait, send a network command to load the game. You could then create a launch command in /opt/retropie/configs/emulators.cfg that would launch the script and apply it to the ROM. Granted, this is a very involved solution and there might be a better way. Out of curiosity, why are you opposed to simply launching the games with a core that will run them?
It's likely you could get it to run through Wine. Normally, this wouldn't be recommended, as the results would be pretty slow. However, a basic editor like PKHeX might run decently well. Rather than point you to a single tutorial out of so many, do a Google search for "wine on raspbian" and just pick one that suits you.
Another option is you could play Pokemon ultra violet which is a rom hack that combines fire red and leaf green into one game which allows you to catch every Pokemon. However I agree this feature being added in would be nice.