If you want to be a professional developer, you should definitely take courses during college that teach programming concepts as well as the specific languages.
In my experience, programming (the thought process) is more or less the same in any language. That said, there are things that are easier in some languages than others. You need to consider what the language was designed to do. For example, it is POSSIBLE to program native functions in Java for low-level programming. However, it is infinitely easier to program native Windows code in languages in the C family or the .NET family.
You also need to know whether a language is more "high level" in which case more of the algorithms have been taken care of for you, or "low level" which means that you'll have to program all the algorithms from scratch or find code that has already been written that does whatever you need to do. Low level is much easier to work with the system directly but making user interfaces takes a lot of code and a LONG time to do. High level means that you'll have an easier time interfacing with the user and doing common tasks, but when it comes to the finer details of what the system actually does, you have very little control.
For an idea:
C, BASIC, *.NET are all relatively low level.
Python is extremely high level.
Java is somewhere in between.
My personal recommendation is to gain some experience in Java because you get a chance to really develop the problem-solving skills necessary to program, then move on to a more (or less) difficult language to help you accomplish your goals. Even if you rarely use it, it is probably good to have a high level language like Python or Ruby because it is easy to program small tasks, or a highly specialized language like AutoHotkey. You can do a lot of the same things with any language but the differences are how easy it is to do things (with little control over detail) or how hard it is to do those same things (full control of detail).
A ranking from lowest-level to highest level:
Something like Assembly gives you absolute control over every detail. But you're so buried in the detail that programming is difficult and it is hard to read the code.
C gives you a little less control over detail but you can get it at if you need to -- algorithms aren't really ever handled for you and the syntax can be difficult and even frustrating to master, as the compiler is absolutely UNFORGIVING.
C++ gives you a lot more libraries to handle the common tasks and gives you object oriented programming -- both of which take the hassle of fine detail out of your hands and let you focus on task-oriented or interface programming. You can still program C++ like you were programming C (almost everything you could do in C can also be done in C++) so you still have strong low-level access. It is good to know or at least understand C in order to program in C++.
Java lets you see everything you need to see, isn't easily integrated with other languages, requires some scaffolding, but in the end is a very clean-looking language with an expansive and well-documented library of built-in functions. It has the added advantage of being cross-platform. If you program well in Java you can add layers of abstraction even during a single project so that once you've finished with algorithmic work you can focus on program logic.
The .NET languages are similar to C++ but use different libraries that allow for easier integration of the languages in a single project. Each of the languages has its benefits.
Python gives you no control over detail and is so simplified that you can do the same thing in a single line of code that might take you 3, 5, or even 10 lines in another, lower level language.
Learning a single language would be very narrow of you. I would start with C/C++ or Java but definitely pick up others. C/C++ is where you want to be for Game programming but don't limit yourself.
The more languages you learn and the more experience you have writing code in them you'll begin to see that all of programming is very much the same. You just have to know the syntax of each language and have an idea of how much has already been done for you or you may end up writing useless code for things that you could already do in a much easier way.
Especially with Java, and more high level languages, the golden rule is DON'T WORK TOO HARD!
As far as what you need to get started: to write code, you don't need to know how to do anything that the OS or the programs you install can do. All you need is a text editor (notepad is usually fine) and you can get started. Although you should probably use an editor more specialized for the language. As far as compiling, debugging, and running code, you need to know more about the language and probably install some software. In order to write code effectively you need to be able to do these things. Ask someone who already programs in the language or Google a how-to for whatever language you want.
For example, Eclipse editor is excellent for Java. DevC++ is a decent free editor for C or C++ code. Microsoft Visual Studio products are good for .NET languages (c++.net, C#, VB.net, etc). However you could technically program any language in notepad or notepad++; you might just have to do a little extra work to compile, run, and debug your code.
"aside from being able to use Microsoft Office, surf the internet, play games (I'm quite confident in my gaming prowess), customize windows appearance, rip music etc"
none of these things will help you program. rather, learning to program will help you understand on a deeper level how these things work.
In general, prior knowledge would be limited to being able to turn on a computer and how to use a keyboard (and a mouse, though not necessarily). It will help if you have an organized mind and think logically, but if you are not, you will develop these skills.
Programming is at the heart of everything a computer does and is in many ways one of the most free-form tasks you can do on a computer. With software developed by others you are limited by what functions they programmed into the software. In programming, you can make your program do whatever you want. You're building tools from the ground up. The power to control and expand on the tools the computer gives us is what makes programmers love what they do (at least in my experience).
Every language requires some basic knowledge of how the language works. Do a little reading up and following tutorials or start-up guides should be your first step when working with any language.