HLSL относится к DirectX, а GLSL - к OpenGL. Нет способа скомпилировать шейдер GLSL в DirectX или шейдер HLSL в OpenGL. Если бы вы выбрали один из этих двух вариантов, вы выбрали бы его, потому что выбрали DirectX или OpenGL.
Cg - это промежуточный язык, созданный в основном nVidia, который может быть скомпилирован как GLSL, так и HLSL. Из того, что я видел, Cg не так популярен, как GLSL или HLSL, но я не особо разбирался в этом.
Все 3 имеют обширные руководства и учебные пособия, выберите Cg, если вы планируете написать систему, которая может поддерживать OpenGL и DirectX, в качестве базового API, или выберите один на основе выбранного вами API. Никто из них не выйдет из моды в ближайшее время.