Two important questions for any programming language/software you choose:
Does it allow you to have fully pixelated graphics?
Does it have support for palette swapping?
gamemaker is a bit of hassle to get pixelated graphics working correctly. Normally it has filtering/interpolation(er, I forget the name), but you can get around this by using a view and setting the port of your view to 2-3x your view area. Or you can use a surface(say 320x240) and draw it 2x, 3x, etc. on the screen. I currently believe surfaces are the better option as viewports are friggin weird. They slightly offset the screen to the top-left. So when you get to the end of a room on either hte right or bottom, a pixel of your background will show up.
gamemaker's sprite rotation and sprite scaling is screwed up with view ports too. Their axis gets messed up so as you rotate a sprite 360 degrees, the x,y origin will move around. I forget now, but I think I was able to fix this when i switched to using surfaces.
Gamemaker has colour blending but cannot do palette swapping without some trickery. To palette swap you need to use the binary file functions to change the palette information in the GIF file that has your sprite/BG resources. This could be a problem if you want to keep your grfx in a format that prevents ppl from taking them easily