On the question of picking whether or not to go (c++ / c#) DX9/10 or jump into (c#) XNA as a hobbyist. I would have to say c# only because of the ability to play your games on the XBox (ha-ha wow we can put our games on a console! thats new! ha-ha-ha).
The reality of it is that we have c++ jocks and c# jocks that always think that their language is better. Don't listen to 1/2 the people that just want to make their language community bigger, learn a language and then learn another one, and another one! c# is a very attractive language, but I would still pick c++ over c# any day. I will say this though, learn the language and how to be a programmer not how to make games. Games are just another form of software!
My main reason for staying with c++ over c# was the speed. After someone told me that the c# DX examples where running faster and with a better frame rate then c++, I had to see it for myself. The c++ code in those examples is horrible! If you take any code and code them both very efficiently, the c++ version will spank the c# version. Try it some day. I did on a radix sort with a binary merge of 16 million numbers on my colleges multiprocessor CPU's.
But if you want to be a hobbyist and not become of professional, learn C#. But if you ever want to make it into the game industry learn both languages and a few others.
Quote:I borrowed some books from the library and it seemed pretty hard and some what long to do. (Not bashing it at all).
Sometimes some languages are hard a first if your unfamiliar with language. But that passes in time as with all languages. No matter which graphics library you chose they will all be hard if you don't have the mathematics background to support your venture into 3d programming.