I've made several browser-based games in the past using HTML, Javascript, jQuery, CSS, PHP, etc. But I'm wondering how would I use these programming languages to make an actual 2D game and compile it to a .exe file. I have a great idea for a new game (Which I won't tell so it doesn't get stolen) and want to try to get it onto Steam Greenlight. Thanks for the help in advance!
You don't make executables from those languages, you can however look into HTML5 to make an web based game and still be in familiar territory.
Short answer: Use Unity.
Anyone who knows Unity will tell you that if you want to make 2d games, be them for browsers, mobile, or pc/linux/mac, you should stop looking for all sorts of traditional 2d game engines and their techniques. 99.9% of the time, the best way to make a 2d game is to use a 3d game engine and to fix the camera on the Z axis.
This way, you can have all the very powerful techniques used in 3d games, in a 2d world; and you can leverage them even more because a 2d game uses much less resources. For instance, you will never have to worry about how to calculate collisions (what kind of grid based traces you should do etc,), because you can simply have 3d box colliders on your assets and rotate them to any slope/angle. And not just bxes, you can have any weird animated mesh colliders you want. Unity takes care of that for you, and it looks/feels much better than a grid.
Another thing is that games on Steam (greenlight) require you to have versions of your game for all these 3 platforms: pc, linux, mac. Not just a windows exe. So again, use Unity, it minimizes your hassle with that.
You have no reason to be intimidated by Unity, you use javascript to code, and the interface is just based on dragging boxes around and setting their properties. If you're familliar with any 3d modelling program, you'll be fine. I have also used UDK for a semester, and let me tell you that udk is about 100.000 times more difficult to learn, more frustrating to use, and slower to develop on.
I would even recommend unity for practically any kind of software. Right now, I'm working on a portfolio website, which I am making in unity, as a "2d game". Unity is so nice that it can export anything you make in it, to GPU accelerated Flash (with stage3d). So I am basically working on web design/development for Flash, by writing javascript in unity. Exciting stuff; I mean, imagine a badass videogame interface as a website running at 90FPS in the browser, with 10% cpu load.
But I digress, the point is, use Unity. Don't get me wrong, it's not some kind of perfect, holy grail of game development, it's just far less worse than anything else available.
I have a great idea for a new game (Which I won't tell so it doesn't get stolen)
Pretty much everything that can be done in a 2D game has been done already.
Pretty much.
Not really.
^^ You are both wrong.
Even if all possible mechanics have already been invented (which is impossible), that doesn't mean people can't or shouldn't make fun & compelling 2d games any more (and that it doesn't involve new ideas).
Here's a new 2d mechanic idea just off the top of my head: dynamically change the FoV of the camera to distort the platforms in order to get around gaps and obstacles (think Echochrome without world-rotation).