Если пользовались ArtMoney или CheatEngine - вот вам и план действий. Ищется уязвимая ячейка памяти процесса(в которой хранится значение денег/хп/маны и т.д) и модифицируется под свои нужды. Как - уже другой вопрос с индивидуальным подходом к каждой программе.
C/C++/Assembler - ибо это лучшие варианты для работы непосредственно с памятью.
Опять же, зависит от того, что именно вы хотите делать. Есть просто невинные "трейнера" для оффлайн-игр, есть атака на сервера, есть "крякинг", есть трейнера для онлайн-игр - для всего этого используются совершенно разные подходы и технологии.
Сейчас защита игр от взлома находится на крайне высоком уровне(та же система Denuvo), так что придется учить до кучи безопасность систем. А это и перехват пакетов, и низкоуровневое программирование, и дата инжекты и еще много чего интересного. Пожалуй, одно из самых сложных направлений программирования, требующего нехилого багажа знаний и практики.