1. I can definitely see its future in drivers, filesystems, codecs (areas where both performance and correctness is required).
2.
+ Rust has fantastic error handling. No null pointers. Mandatory error checking, but with very light syntax.
+ Dependencies and modularization in Rust are soooo much easier than in C.
+ You never have to write `free()` again.
+ Thread-safety can be guaranteed at compile time.
- Significant learning curve. You need to "get" Rust's ownership approach before you even manage to compile a non-trivial program.
- It's still "new", so it may be hard to convince people to use it. C is 45 years old, so it seems like a safe bet (it has flaws, but the flaws are well-known).
3. What Rust calls "unsafe" is what all of C is, so it's never worse than C. The idea is that you carefully implement these structures using raw ("unsafe") pointers, and wrap them in a safe Rust API. This way you need get it right once, and rest of the code doesn't have to worry about breaking things.