Не так важен С++, как важен сначала С, чтобы получить понимание работы программ на низком уровне. Потом имеет смысл двигаться в сторону ООП головного мозга, изучая С++ и паттерны проектирования. ASM, WinAPI и прочих динозавров имеет смысл трогать только если есть много свободного времени и зубодробильная мотивация стать "архитектором Матрицы".
А дальше все само: выплывет сначала на какой-нибудь удобный фрэймверк типа Qt (но возможно черт дернет и в .NET c C#), а от него и до Java рукой подать.
К практической части от Lol4t0 всецело присоединяюсь.