Glad you've got mostly everything working, RetroArch can be a pain in the ass. There's times where I still botch something and have to delete the whole RetroArch program and start all over which sucks so I can understand the frustration.
For N64 games I just use the default controls for the Shield Controller, I find it works relatively well for me as it is.
USB controllers do work and pretty much anything should work as I understand it. That said you might have to configure a controller's inputs first. There's a certain way I'd go about this though. When you plug a controller in and it doesn't automatically work you need to go into the input settings in Retroarch. Go into the settings for Input User 2 or above (I'll explain why in a bit) and change User 2 device index to the controller you've plugged in (might have to press a button on the controller to get it to show up first). Select either Bind All or bind each button individually. After you're done save an autoconfig for it. Exit retroarch and then the next time you enter it if you press a button on that controller you want to use it should map it to you automatically from then on.
-Turn on Menu Toggle Command Combo to "Down+L1+R1+Y" in the input settings. That'll let you exit to the menu for controllers that don't have a home button. In fact i'd probably set this before you configure anything else.
-Use User 2, 3, 4, or 5 to configure a controller. If you use User 1 to do it and you mess up the bindings or you accidentally botch your shield controller settings you won't be able to get out the RetroArch properly and you'll have to restart the Shield. If you botch it bad enough you might even have to uninstall RetroArch entirely and install it again.
As far Sega CD games crashing on you, i'm not sure. It could be bad ISOs it could be your BIOS files. If you want to use my working BIOS files you can. Just put them where you're telling the shield to look for them in:http://www.mediafire.com/download/h71hk ... +Files.zip
This zip contains the Sega CD bios files in both the format that GenesisPlusGX requires and PicoDrive requires. The Playstation 1 BIOS (PCSXReloaded may or may not require them, I haven't actually double checked), and the BIOS file for the famicom disk system. I just put in the FDS bios file I use on my Retroarch, I had not tested it with the Shield yet.
As for RetroArch crashing on other things, Android has become wierd and very annoying since ver. 4.4.2 about writing to the SD card (or not being able to for that matter). This might be an effect of that. If you're settings RetroArch to do things like download cores or save save files to the SD card it may not actually be able to and that's what is crashing it. There's ways to fix this but sometimes it requires rooting your device or finding a way to change the write permissions of something. Generally I don't mess with it. Personally what would do and put things like Roms/ISOs on your SD card and keep stuff like save data on the internal storage. If RetroArch generally needs to write to a file it's best if it's there on the internal.