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 ?
If you have a Nintendo Switch play Pokemon: Let's Go, Pikachu. You can play the game while your son follows you around, which might be good if he'd struggle to play the game on his own. You do get to battle together and the game is very easy even compared to the original, it is a remake of the original if you didn't know. I've only completed Pokemon Yellow and Fire Red and personally prefer the original 151. I am a 90s kid so it was at the perfect time for me along with the TV show and first movies.
Both sun / moon and Let's go Pikachu / Eevee are great start, choose the one you are the most comfortable with price wise and in terms of content
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.