1. Cross compiling has worked in rust since before 1.0, but it's required some manual configuration (downloading the platform's stdlib and adding command line switches, etc.). A goal for the future is push-button cross compilation [1]. I'd also add that the standard library has most of what you'd want for cross platform compatibility, from higher-level interfaces that work cross-platform (like std::thread [2]) to lower level bindings for each platform like (std::os::unix::fs [3] or the OsStr system [4]).
2. Yep, C interfaces are pretty trivial. However, they do need to be manually defined. There is no built-in way to parse C header files or declarations. [5]
[1]: http://blog.rust-lang.org/2015/08/14/Next-year.html
[2]: https://doc.rust-lang.org/nightly/std/thread/
[3]: https://doc.rust-lang.org/nightly/std/os/unix/fs/
[4]: https://doc.rust-lang.org/nightly/std/ffi/struct.OsStr.html