Das ist eigentlich ganz simpel:
Fängst du mit XNA an, dann programmierst du dir dein eigenes kleines Framework, das sehr schnell zu einem Spiel wird. Dir wird viel Arbeit abgenommen, aber du musst dich auch um vieles selber kümmern. Du kannst hier sehr schnell kleinere Spielchen basteln, aber für große Projekte wirst du als Neuling sehr lange brauchen.
Fängst du mit Unity an, wird dir sehr viel Arbeit abgenommen, noch mehr als bei XNA. Es gibt einen ausführlichen Editor, vorgefertigte Scripts und so weiter und so fort. Hier kannst du auch sehr schnell größere Projekte realisieren, da z.B. Sachen wie Level Design alle in Unity geschehen können und du nicht erst externe Tools benötigst.
Fängst du mit DirectX an, wird dir nur sehr wenig abgenommen und du musst fast alles, was dir bei XNA und co gegeben wird, selber schreiben. Du hast hier den längsten Weg bis zum Ziel, hast dann natürlich aber auch volle Kontrolle über das, was geschieht, und der Lernerfolg ist sicherlich der größte.
Ist dein Ziel später mal eine Engine zu schreiben? Willst du möglichst viel über die Technik hinter Spielen wissen? Dann lerne DirectX ohne Umwege.
Hast du eine Spieleidee und möchtest sie unbedingt schnell umsetzen? Nimm Unity ODER XNA(oder etwas ähnliches) - abhängig von der Idee und wie viel du tatsächlich in die Programmierung einsteigen willst.
Hast du zwar keine Spieleidee, möchtest aber trotzdem das entwickeln von Spielen lernen und dabei noch relativ großen Einblick in die Technik dahinter haben? Dann nimm XNA. Oder eine andere Library, mit der du leicht Spiele programmieren kannst. SFML, SDL, HGE... Da gibt es so viele.
Eins noch:
Ob du zuerst 2D oder 3D lernst macht faktisch keinen Unterschied, ich würde aber empfehlen, zuerst mit 3D anzufangen. Der Unterschied von 3D auf 2D fällt leichter, als der Umstieg von 2D auf 3D
Und als kleine Motivation sich auch mal zu trauen, nicht den augenscheinlichen schwierigsten Weg zu gehen:
http://scientificninja.com/blog/write-games-not-engines