The very first thing that you need to understand is that like any skill, it takes practice to become proficient. Books are great, but there's no substitute for actually doing it. Don't be afraid to get in and program. Your first several programs will suck. I suggest treating it like play time. Start putting things together and seeing what happens. Your programs don't have to be good or even work properly, as long as you're learning.
If you're ready to take the journey, you need to think about what it is that you want to do. C is a good place to start, but it's pretty low level and unforgiving. If you want nice visual results, you're probably going to want to look elsewhere. C++ is a very popular language and is an extension of C. C++ is an object-oriented language, where C is not (though you can come pretty close with something called structs). Object Orientation means that you can deal with things called objects, which are logical groupings of properties and abilities.
As an example, you could create a "dog" object which has a name, a color, a breed, and has the ability to scratch itself. Then in your program you could create several of these dogs with distinct properties.
Python is a high level language and I think its syntax and general flow are a little easier. It's slower than C or C++, but it may be less overwhelming for a first language. C and C++ can be scary, but they're worth learning at some point.
This message is long and rambling, but the point is that you need to decide what you want to do, what your time frame is, and you need to understand that it takes a lot of work to become a good programmer.
If you *do* choose C or C++, I suggest their respective books by Deitel and Deitel. Do the exercises and put in the time. If you try and take shortcuts, you may end up with cracks and holes in the foundation of your knowledge.