Los gráficos se hacen con el programa que quieras, y el lenguaje que utilices a priori no importa (las imágenes son imágenes en c, java y python). Para ser 2D supongo que yo utilizaría photoshop para los fondos y los sprites (¿vas a usar sprites?). Luego ya para formar las tiras de sprites, según los cargues hay programas que te facilitan bastante la tarea de meterlos en una imagen, con el fondo de color y todos alineados y tal (googlea para ver qué necesitas). Si vas a meterle algún efecto, pues no sé si la librería que uses traerá de serie o cómo funcionarán, si no, también puedes currarte una animación del efecto con fondo transparente en after effects y meterla sobre todas las capas de imagen del juego
Para los dibujos también tienes gimp que es gratuito y no está mal, cada vez lo van mejorando (aunque sigo preferiendo photoshop, más que nada porque lo he usado siempre).
De todas maneras, un apunte: Si no sabes dibujar y utilizar mínimamente programas de diseño gráfico, se te va a complicar la cosa mucho (te lo digo por experiencia, desde que estudio 3d he vuelto a clases de dibujo porque es un lastre impresionante no tener un muy buen nivel de dibujo). Si se te complica mucho la cosa, siempre puedes tirar de librerías de sprites e imágenes libres citando en los créditos al autor.
Un saludo, y espero haberte sido de ayuda.