Rust - absolutely, for sure! In terms of Assembly, it's incredibly difficult to write an efficient Assembly code these days, especially in a multithreaded, multicore environment. In such environment, as humans we just can't compete with compilers any more. Reading and analyzing assembly code from C/C++, - sure that's absolutely necessary. Writing an assembly code from scratch, better than compiler? I am sure people do that but that's ... quite hard.
Yes, but there are parts of the CPU instruction set which a compiler won't ever emit. If you are using those features, as certain low-level systems must, then you use assembly (typically shortish snippets called from a compiled program).