Pomiędzy starymi API, a tymi nie tak starymi (czyli DX 9+, OpenGL 2+) jest dość duża różnica - te stare bazują na fixed-pipeline, a nowe bazują na shaderach. Shaderów jest wiele typów: vertex shader, pixel shader, geometry shader, shadery do teselacji, compute shader, itd (sama nazwa shader oznacza dosłownie coś a'la 'cieniowacz', natomiast w rzeczywistości to nic innego jak krótki programik, który może być odpalany przez jednostki obliczeniowe na GPU, które też nazywa się shaderami).
Obecnie na shaderach lata praktycznie wszystko, od menedżerów okien w systemach operacyjnych, poprzez małe gierki na komórki, na dużych grach na konsole i pecety kończąc.
Nie ma wielkiego sensu uczyć się przestarzałego API i czytania o fixed-pipeline, bo tylko zmarnujesz czas zaśmiecaniem sobie głowy.
Różnica między DirectX, a OpenGL jest taka, że podobno DirectX w wersjach 10 i powyżej jest wygodniejszy do programowania niż OpenGL. Na pewno DX jest obecnie popularniejszy na platformie Windows niż OpenGL. Platform jest jednak wiele więcej. Jeśli jesteś wymiataczem to możesz pouczyć się DX i być może dostaniesz się do zespołu piszącego większe gry na Windowsa. Natomiast OpenGL jest wieloplatformowy, obsługiwany jest przez Windowsa, MacOSa, różne dystrybuje Linuxa (a także BSD i inne typy Unixów, choć tam mogą być większe problemy ze sterownikami), a co najważniejsze - platformy mobilne, jak Android czy iOS. A platformy mobilne, czyli smartfony, tablety (i cokolwiek co jeszcze mobilnego powstanie) to dynamicznie rosnący rynek.