Comment K&R (Score 1) 569
Start with C or C++. K&R is always a handy starting reference. Learning a typed language I believe is harder than something like C#, VB or Java but that is just me.
You will never become an expert at any language and you really should not try to. If you are really good you actually learn how to learn languages rather well.
If you want to do kernel and driver work like you hinted at then you will need C. Most kernels do not support OO so C++ and managed languages are out for the most part. You can still use C++ for then in some cases you just can't use certain parts of the language like OO.