Yeah, I have very mixed feelings about CSS variables. I think that this functionality could have been better handled with CSS-based inheritance. Think:
.blueText { color: blue; }
.bold { font-weight: bold; }
.link { extends: .blueText; text-decoration: none; }
h1 { extends: .blueText, .bold; border-bottom: 1px solid black; }
I'm not sure that would have been any harder to implement, and it would have been a more reasonable approach to shared properties. CSS in general is pretty uninspired. It usually turns into a huge mangled mess of selectors and properties that are difficult to maintain and require a good working knowledge of complicated precedence rules to actually sort out. There are also performance considerations that become apparent when working with low power devices that can be really frustrating to figure out because those devices often don't come equipped with the kind of robust developer tools needed to actually determine what's causing the performance issue. So you not only need to know the complicated precedence rules, but you need to be aware of how the actual browsers get implemented so that you can avoid performance pitfalls. So yeah, I'm not a huge fan of CSS in general. And I think that adding variables to the mess will just encourage people to do more obnoxious things with it.
Personally, my favorite CSS3 feature is CSS animations. They allow for huge increases in animation performance in mobile devices by providing the necessary information for the browser to offload animation rendering to the GPU. Sadly, IE9 does not support CSS animations, but IE10 does. So once everyone upgrades to Win8 we'll be in business.
-Pete