Что нужно знать для создания 2D движка?
C, C++, OpenGL, OpenAL, Bullet/Box2D, glfw, glm, glew, GLSL, vectors, matrices и вся линейная алгебра. Форматы данных, структуры данных. Пайплайн рендеринга и механизмы работы видеокарты. Ну и UI фреймворк какой-нибудь.
Вот вам полезный курс статей, думаю пригодится https://habrahabr.ru/post/248153/