RetroArch is commonly used with emulators but it's not an emulator itself. RetroArch is just an A/V frontend for software using the libretro API ("libretro cores"). It's well suited to all applications that need very low latency and tight A/V synchronization, using only limited types of hardware device (libretro cores are not sandboxed so they can technically access any hardware, but they work best if they use the libretro abstractions).