#1 Si vas a utilizar Canvas, utiliza algún motor ya existente en el mercado. Cosas como Phaser, Crafty, Impact o Lychee son bastante bonitas. Más que nada, este tipo te van a abstraer de las diferencias que hay del API entre distintos navegadores (aunque seguramente para solventar este problema te sobre con jQuery).
Sin embargo, para un juego "estilo Ogame", usar el Canvas puede ser innecesario. Empieza con algo más básico y huye de PHP. Tira mejor de NodeJS y así evitas tener que aprender dos lenguajes de programación (uno cliente y otro servidor), además de compartir librerías entre ambas plataformas. Yo empezaría con algo muy sencillito con Node y usando LocalStorage o IndexedDB (si no está deprecated) como DB, y luego, cuando salgas a producción, ya preocuparte de una base de datos de verdad (con Heroku lo puedes configurar fácilmente, imagino). Usando frameworks como Ember o Angular es relativamente fácil abstraerte sea cual sea el Storage final (en servidor o en cliente).
#6 Veo que aquí también estáis enganchados. El puto ClickerHeroes mató mi productividad en agosto ¬¬