A lot of code is still written in C89 for maximum portability, and I regularly do that. The only thing I really miss from C99 is the mixed declarations and code, but you can instead use nested scopes or just move the declarations up to the top.
C99 object literals are also fantastic. I feel very constrained when I have to use strict C89.
Meanwhile, in terms of C11 [update: actually also from C99] I actually wrote a function with a signature like
void func(int arg[static 3]);
but later removed it because (a) the generated code was the same, and (b) rather than increasing clarity and self-documentation, it caused confusion; even when you're familiar with the feature, it never stops looking like a syntax error.
And stdint.h, variadic macros, restrict, inline (admittedly less necessary as compilers become more clever), flexible array members...
I mainly still stick to variable declaration at the beginning of the block out of habit but it would be a pain for me to go back to C89 and forsake all these other nice features.
Until recently, even MSVC was C89. I believe they only added some C99 features because the C++11 standard required them (in VS2013, I believe), and full C99 support only came with VS2015.