1- Çalışabilirsin tabi ki. Hatta Windows Forms Application'lar bile üretebilirsin. Fakat C programlama dilinde nesne kavramı olmadığı için bir süre sonra bu işler çok zor olacaktır. Genellikle güvenlik amaçlı yazılımlarda ve gömülü sistemlerde kullanılır. C++ ile nesneye yönelik programlama yapılabilir. QT araştırabilirsin.
2- Çok ucu açık bir soru. Bir üstte verdim cevabını. Şöyle cevaplayayım yelpazeyi sen düşün, yeni bir programlama dili bile geliştirebilirsin bu dili kullanarak

Örneğin Linux çekirdeği C ile yazılmıştır. Çekirdek seviyesinde uygulamalar için biçilmiş kaftan.
3- Doğru. Fakat doğru ellerde. Yanlış ellerde eziyete dönüşebilir. RAM yönetimi betiklerinin çoğu C ile yazılmıştır.
4- C dilinde doğrudan donanıma gider gelirsin farkında olmadan. RAM'deki adresleri görmeyi dene tuttuğun değişkenlerin. Pointer mantığı var, iyice oku.
5- Cevabını verdim fakat tekrar vereyim. Gömülü sistemler, yüksek performans gerektiren işlemler, doğrudan donanım ile ilişkiye girilen işlemler, güvenlik uygulamaları, çekirdek seviye uygulamalar.
6- Basit, C++ ile daha iyi performans alırsın ve donanıma dalabilirsin. C# ile de yapmak mümkün fakat performans açısından bir C++ olamayacak. Eğer ben nesne kullanmam diyorsan tabi ki C ile de oyun yapabilirsin
C#'dan C diline geçmişsin. C dili başta kolay gibi görünse de bir hayli zordur. Zaten C++, C dilinin nesne eksiğini gidermek için ortaya çıktı. Java'da C++'ınkileri. C# da Java dili örnek alınarak geliştirildi.
C dilinde program yazmak uzun bir iştir. Örneğin C# da olduğu gibi bir liste oluşturup, foreach ile liste içerisinde dönemezsin. Tamamen el yapımı olman gerekiyor. Framework altındaki hazır sınıfları kullandığın gibi C'de program yazamazsın.
Çok uzun süre C ile yazılım geliştirdim. Yapmak istediğin interaktif ve son kullanıcıya hitab eden projeler yapmaksa, bu dil ile yapmanı tavsiye etmem. Çünkü astarı yüzünden pahalıya gelir.