Язык не важно - главное руки. А, Ещё одно, в книгах по программирование и даже в стандартных доках часто ошибаются, перепроверяй все, даже спецификацию. Во первых стандарты меняются, в вторых - я, после несколько лет одной практики, решил почитать основы по яп на котором писал и часто орал "Что ты несёшь, ты сам-то хоть кодишь?".
В Msdn допустим приоритеты у ++i и i++ в C# разные, на деле же одинаковые.
В Учебники написано, что мусор автоматом удаляет информацию и мгновенно(и для сылочных типов данных и для типов значений), на деле, если в цикле написать new className(), то жди нехватку памяти.
По поводу что учить, областей много, для GameLogic Programming хватит дефолтных знаний(школьных знаний) - математике, геометрия, а не школьные - это структуры данных и алгоритмы.
для Physics Programming - Механика.
для Graphics Programming - Оптику как минимум и линейную алгебру(Матрица, Вектора и прочие)
Посоветовал бы булевую алгебру как и все, для всего программирование, ну знание оттуда придут с опытом и как свои, поэтому сам решай. Говорю я о том, что мне пригодилась