Generalnie najbardziej nisko-poziomowymi dostępnymi bibliotekami są: DirectX oraz OpenGL - na nich wszystko się opiera(jest również Mantle od niedawna, ale odradzam początkującym). Co znaczy nisko-poziomowe? Sam musisz dbać o wczytywanie zasobów, o utworzenie urządzenia oraz kontekstu, pisać obsługę zdarzeń, wysyłać dane do GPU - czyli działasz na poziomie CPU i GPU oraz zarządzasz pamięcią. Wszystkie silniki są oparte na tych bibliotekach, bowiem one stanowią tzw. podstawę. Z kolei silnik graficzny/gry skupia się na aspektach samej mechaniki gry - czyli co kiedy ma się wyświetlić, budowanie sceny itd.
Jak widzisz, pisanie silnika to bardzo szeroki temat... z programowaniem gry - tak samo. Dlatego rzucając się na pisanie silnika, na którym będzie oparta gra, to podwajanie sobie ilości pracy.
Polecam Ci na początek skorzystać z gotowych silników, by obyć się z tematem i przede wszystkim uzyskać szybsze efekty pracy :)