Beetle-psx and pcsx-rearmed are software-rendered. that means they’re stuck at native resolution but they work with any video driver (gl, vulkan, d3d*, etc) and can use any shaders (whichever ones are appropriate for your desired video driver).
Beetle-psx-hw is hardware-rendered (hence the ‘hw’ in the name) and it has GL and Vulkan renderers. Some hardware-rendered cores have other renderers, as well, such as PPSSPP and Dolphin, while others, like mupen64plus-libretro, only have GL. These cores need the video driver to match their renderer, and they can use shaders that match the video driver.
So, for example, beetle-psx-hw and dolphin-libretro both support vulkan, so you can have your video driver set to vulkan and they’ll both work. You can load slang shaders and they will work, but if you try to load Cg shaders, you’ll get a black screen.
GL works with the most cores (all of them, I think…?) and GLSL shaders. Cg shaders also work with GL but not with all cores. Confusing, I know.