It's always the pasture you don't know that is greener. Since I don't know anything about your background, I will give the things you could learn from a project: (1) developing for the real life
i.e. getting things done, making customers happy, dealing ith non-geek customers, coding in a team, surviving management)
(2) diversify
you need to know more than one "pasture" - if you did the C++/Windows combination all your life, do something else just once.
(3) specialize
If you already have experience with different languages, OS'es, CPU's etc., specialize on the on that suits you best (both "fun factor" and "making a living" - depends on your requirements)
(4) stay on top
If you found your place, don't fall back. For the Wintel specialization, this would mean .NET, or maybe the things you mention - like device drivers (again, depends on your wishes and requirements)
They are in descending priority, meaning: If you never developed for real life, do what comes closest to this. If you already had your share of that, think if you need to diversify. etc.
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen