People have covered most of the high points, but I thought I'd throw in my $.02.
I think you are wanting to know what tasks particular languages are best suited to, so I'll try to cover the languages mentioned in this thread and a few others:
C - This is one of the oldest languages in general use. It was developed in about 1977-1978. Fortran beat it out of the gates. It is very powerful, and very widespread, and is essentially the language of UNIX. Everything that UNIX operating systems provide to the programmer is done through C. C is used almost everywhere, for almost any task whether it's the "right" choice for said task or not. Most platforms, such as embedded controllers in toasters, etc. will have a C compiler, so it is often used in this sort of restrained environment.
FORTRAN - This was the first high-level language. Before this it was all Assembly and Machine code. When people say mean things about fortran, and its outdated syntax, etc. they are generally talking about Fortran 66/77, because very few people have used/seen Fortran 90, Fortran 95 or Fortran 2003 (that latter of which doesn't really have a compiler, but the standard is out there). The later revisions add some important syntactical changes such as the use of ==, >, etc. instead of the "dotted" operators .equal. .gt., etc. as well as better interaction between C/Fortran, more robust Object-Oriented support through modules, etc. Most people still say mean things about Fortran, but in its newer incarnations it is a pretty pleasant language to use and is very fast. It's niche is scientific computing.
C++ - Came along a few years after C. It is *not* a proper superset of C. There are things that behave differently in C and C++. You will probably never run in to them, but it's worth mentioning. C++ added Object-Oriented programming to C. A number of the Windows APIs such as COM, MFC, Win32, etc. use C++. It's quite fast, and quite popular. If an embedded platform supports more than C, C++ is normally what is added.
C# - This is a Microsoft invention. It is compiled to something called byte-code rather than machine code, so it does not run on actual hardware. It requires a runtime to be installed for it to run on top of. For Windows this is called the Common Language Runtime or CLR. This runtime is used for all .NET languages. This runtime is only available on Windows. There is an implementation of the CLR and compilation tools for C# for other platforms called Mono. Its developers and the code are now part of Novell. There are agreements between Novell and Microsoft, but Mono may violate Microsoft patents and may not be available longterm. Those are all political concerns, but I mention it because I would not consider this a serious option if you are not targeting Windows. C# is an Object-Oriented language with a very large library of supporting functions, and its primary uses are application programming on Windows. There is a subset of C#s libraries that can be used on a mobile CLR available on the Windows mobile platform, allowing its use on certain mobile devices.
Java - This is a Sun invention. Until recently Sun completely controlled the platform, but they have been making it open source recently so developers and users are not strictly at Sun's mercy any more. Java is, like, C#, compiled to byte-code. It is run on a platform called the Java Virtual Machine (JVM). JVMs are available on most popular platforms, and subsets of java and JVMs to support them are available on a number of portable platforms as well. Java is used on the server-side of a number of client-server applications, and for cross-platform client software. There is a Java bridge to Cocoa on OS X, but it is no longer being updated. This component would allow for native interfaces on OS X using Java for the main application code.
Python/Ruby - These are both modern scripting languages. They run on a runtime like Java or C#, but are distributed and run as source code/scripts instead of compiled to byte-code. These are popular for all sorts of scripting and application programming purposes. There is a bridge that is actively maintained to Cocoa for both of these, so they can be used for OS X applications with native interfaces and OS access.
Essentially these languages go from highest performance/lowest ease of programming to lowest performance/highest ease of programming. In these tiers C/Fortran are about the same, and Java/C# are about the same. With modern computers, however, speed is much less of an issue than it used to be.
I'm sure on some of the more subjective items people will disagree, but hopefully this gives some background on the languages mentioned and their general uses. Since all of these languages are
Turing Complete any of them can really be used for any task. The real limitation is the APIs for the OS you are targeting. If you want to use Fortran on OS X for a GUI application, you will have to deal with interacting between Fortran/C/Objective-C, whereas if you just picked Objective-C you could interact with the Cocoa API (Application Programming Interface, don't know if we stated what that acronym was for yet) directly.
The Cocoa/Carbon difference has been covered. Essentially Carbon was created to allow for apps to run on OS 9 and OS X during the transition, and Cocoa is a NeXTSTEP/OS X only API. Cocoa is the new hotness, so any new OS X projects should really target this API if possible.
-Lee
P.S. On the question of whether apps can contain multiple languages: They certainly can. Even in the same program (not in pieces that are called independently). There are things like Embedded Mono for calling Mono routines from C and vice versa, JNI which is the same thing for Java, there is a standard means of calling Fortran from C and vice versa, etc. Objective-C is a proper superset of C, so any C can be called from Objective-C, etc. and there is Objective-C++ which allows for mixing the two if you need (I would expect this is normally if you have existing C++ code you want to use, as I think mixing the two object models would be confusing if it was not strictly required).
Edit 2:
I totally left out Objective-C, oops.
Objective-C is a proper superset of C, providing smalltalk-like message passing to objects. This language is primarily used in OS X. The Cocoa API is in Objective-C, making Objective-C the "first class" language for programming OS X applications. It is object-oriented, but does not share its object syntax and message-passing syntax with C++. In terms of speed it is a compiled language that is on par with C++ in terms of message passing vs. function invocation. It has recently reached version 2.0, adding features like garbage collection and for-each loop syntax which have made it even more competitive with languages like C# and Java in terms of ease of programming and language features.