I am sure this has been asked a bunch of times already, but I will give some background information because I want a more personalized response then what I've encountered in these types of forums.
First, a little bit about myself. I am a Computer Science major. I have one year of undergraduate schooling left that constitutes pretty much 2 years worth of classes in the major, because I transferred from a completed psych degree with most of the general classes done so I am solely working on the major now. I have taken classes in Java and C. I am not a great programmer yet, but I have become more aware of concepts through the algorithms class I am currently taking. I am only barely familiar with linux/unix and other languages like perl, scheme and prolog. I am also in the second digital electronics class of a 4 class hardware series. Most of the classes I have taken so far are math related (preCalc, Calc I, II, physics I, II, and currently taking Calc IV which deals with vector math). I plan to learn C++, because it seems to be the video/computer games industry standard. Maybe add a little python in there since I read it's a good language to make games along C++ (how or why I would like to know).
For personal skills which can aide this process, I am decent at drawing and I write in my spare time. I am a planner to the extreme, so organization and setup is key before I'd even jump into programming something like this.
I don't know what direction I want to take my degree and will probably accept the first CS type job I can get to pay my student loans when I graduate. However, I do want to develop games on the side on a small scale (indie games, 2d, and possibly 3d eventually if I can find like minded people who would work on something in their off time for nothing but the promise of experience and possible future pay from digital distribution).
I want to do something small in the beginning in which I can do everything myself before moving onto bigger projects which will necessitate 3d artists, musicians and other types of staff. I want to learn what I need in order to make a 2d game from the ground up (sprite based graphics, C++ programming). It will be single player and have things like characters that can walk/run/attack, sound effects (likely taken from a public domain sound effects site like soundbible), action which requires hit detection (shooting enemies), items that can be picked up like a set of keys or items that can be picked up from the environment like picking up a box and throwing it at an enemy, (un)lockable doors, and multiple endings.
Please let me know what kind of languages, software and concepts I would need to become familiar with in order to make something like that myself. I see stuff like "whatever you are familiar with is good" but I'd like answers more in line with what standards are expected if one were to work in the industry. I don't really care about learning too much about 3d graphics yet if ever, because if this became more than a hobby, I'd want to collaborate with 3d artists who could worry about that. I do want to learn how to incorporate 2d sprite and tile based graphics into my coding and in general how coding a game works. I would also like to find a good resource on game design for beginners. Especially something that could have tutorials on making schematics if thats necessary.
Also, if I'd need to make a website to promote something like this, would a blog be good or should I make one from the ground up as well? Sorry if I'm asking so many questions at the same time, but I have done a good deal of reading and understand that doing something like this doesn't simply consist of having a good idea. It seems to take lots of work, testing and eventually promoting, so I want to get a good idea of what to expect with all of the above.
Please, if anyone has a good answer and/or helpful resources (websites, literature, etc.) for any of the questions, it'd be greatly appreciated!