>>1
"Why?" is a useless question. "When?" is a better one. If you're writing a daemon that runs indefinitely and churns through a lot of data for every incoming connection, there's probably no reason at all to pick C over Java. However, if you're writing a frequently invoked command line tool that needs to launch and finish its task as quickly as possible, anything on the JVM is outright disqualified, whereas (ironically enough) Ruby or Perl might be as good a choice as C.
If you hope to be a good programmer you should learn all of these and know their weaknesses.