First, Mike's answer is quite good. I will mostly expand on it and provide more details.
TeX
TeX is a language (a full programming language, actually) for typesetting documents. It originally output to a format called DVI which could then be converted to PostScript, PDF, etc.; more recent versions can output directly to PDF. You write a document with TeX instructions in it, and the TeX system will convert it into printable material.
TeX is used for a wide variety of documents, particularly in science and academia. Most people use it for things that other people would likely use Word for; however, the quality of its results are more on a par with InDesign or other major document layout packages, far superior what word processors generally yield. Designing specialized or ad-hoc document formats such as brochures, however, is probably easier with InDesign or QuarkXPress (although it is not impossible to do so in TeX/LaTeX).
TeX itself is quite low-level.
LaTeX
LaTeX is a macro package written in and for TeX that provides commands and defaults for writing larger documents at a higher level, taking care of things like sectioning, tables of contents, etc. In my experience, most TeX users do not write low-level TeX directly, but rather use LaTeX. LaTeX is not the only such package, though; ConTeXt is another macro package with a different design philosophy, but it sits at a similar level to LaTeX.
Usage
TeX and LaTeX are very widespread in some portions of academia, such as mathematics and computer science, due to its superb support for mathematical formulas. I have also heard that it is popular in some other disciplines as well, such as linguistics.
It certainly is possible to use LaTeX just as a file to be read by TeX, but it's not common. There are at least a couple of reasons. TeX is designed to allow a set of macros ('format') to be read then dumped 'as is' by 'IniTeX'. When you do
tex <file>
you are running TeX the program with Knuth's plain format, rather than a completely un-initiallised 'VirTeX' ('virgin TeX'). LaTeX cannot be loaded once any other format has been, as there is overlap between names in ways that are not always compatible. You can run TeX with and load the LaTeX kernel using IniTeX
tex -ini "\input latex.ltx"
(on my system, at least: the details vary a bit). However, doing this means that TeX has to process all of the LaTeX kernel before doing anything 'useful'. It's therefore easier to load the pre-built format (memory dump):
tex "&latex"
(The &
syntax is general: tex "&<format-name>"
loads whatever format is requested.)
The binaries you see on a modern TeX system are very much like wrapper around this process, although they run pdfTeX rather than Knuth's TeX. There are some 'details' to this, but the basic idea is the same.
ConTeXt is a little different as unlike LaTeX it does the multiple TeX run stuff itself. As such context
is more than a wrapper: it's a complex script. You can run ConTeXt as a format, in the same way as you can for LaTeX, but this is even less useful than it is in the LaTeX case.
Best Answer
From Donald Knuth's TeXbook, p. 1:
The same is true for LaTeX and all others.