Słuchaj, na forum i w ogóle w internecie jest masa tego typu pytań.
No ale odpowiem ;) Ja zaczynałem od Unity, jest prosty, całkiem przyjemny w obsłudze, pisze się w nim skrypty w C#, JavaScripcie i Boo (jak będziesz wolał Unity, to wybierz C#, jest lepszy według mnie i w oficjalnych tutorialach używają tylko niego). Unity jest dobry do gier 3D jak i 2D, więc możesz zrobić co chcesz. Licencja Unity nie jest zbyt fajna, bo możesz używać wersję free (która nie posiada niektórych rzeczy, w przeciwieństwie do płatnej wersji), a jak będziesz zarabiał 100 000 $ rocznie, to będziesz musiał kupić płatną wersję i oddawać trochę zysków twórcom silnika.
Jest też drugi dobry silnik, czyli Unreal Engine. Nic w nim nie robiłem, ale chciałem z nim zacząć i kiedyś zacznę. Jeśli chodzi o 3D to jest na pewno lepszy od Unity. Jeśli chodzi o 2D, to w sumie nie wiem, do 2D to najlepiej skorzystać z biblioteki graficznej ;) Piszę się w nim w C++, co jest super opcją. No i Unreal jest całkowicie darmowy, tylko musisz oddawać twórcom silnika 5% z zysków ze sprzedaży twojej gry (jak już będziesz sprzedawał ;)).
Jeśli chodzi o silniki, to do gry 2D bym chyba wybrał Unity. Do 3D o wiele lepszy jest Unreal. Ale jeśli chodzi o zrobienie gry 2D niekoniecznie z użyciem silników, to polecam bibliotekę graficzną SFML ;)