LaTeX kernel
The LaTeX kernel defines several math alphabets in fontmath.ltx
\DeclareSymbolFontAlphabet{\mathrm} {operators}
\DeclareSymbolFontAlphabet{\mathnormal}{letters}
\DeclareSymbolFontAlphabet{\mathcal} {symbols}
\DeclareMathAlphabet {\mathbf}{OT1}{cmr}{bx}{n}
\DeclareMathAlphabet {\mathsf}{OT1}{cmss}{m}{n}
\DeclareMathAlphabet {\mathit}{OT1}{cmr}{m}{it}
\DeclareMathAlphabet {\mathtt}{OT1}{cmtt}{m}{n}
This must be completed by the previous declarations
\DeclareSymbolFont{operators} {OT1}{cmr} {m}{n}
\DeclareSymbolFont{letters} {OML}{cmm} {m}{it}
\DeclareSymbolFont{symbols} {OMS}{cmsy}{m}{n}
so that we know precisely to which font correspond each math command:
\mathrm is the normal upright Roman font
\mathnormal is the normal math italic font: $\mathnormal{a}$ and $a$ give the same result
\mathcal is the special calligraphic font for uppercase letters only
\mathbf gives upright Roman boldface letters
\mathsf gives upright sans serif letters
\mathit gives text italic letters: $different\ne\mathit{different}$
\mathtt gives upright letters from the typewriter type font
One should notice that the argument to each of those commands is typeset in math mode, so spaces are ignored and hyphens become minus signs. Using those commands with arguments not consisting only of normal letters can give unexpected (and sometimes bizarre) results.
No package has to be loaded for being able to use those alphabets.
AMSfonts
With the amsfonts package, which is loaded automatically by amssymb one has access also to
\mathfrak for Fraktur (aka Gothic) letters, upper and lower case
\mathbb for "blackboard bold" uppercase letters
RSFS
The package mathrsfs makes available the "Ralph Smith's Formal Script" font as a math alphabet, with the command \mathrsfs, while calrsfs will do the same but also turning \mathcal to choose the RSFS font (only uppercase letters).
Zapf's Euler Script
The package euscript will load a different calligraphic alphabet, Euler Script, designed by Hermann Zapf. Depending on the options, it will provide \mathscr (to go along with the original \mathcal) or change \mathcal to use Zapf's font:
\usepackage{eucal}
\usepackage[mathcal]{eucal}
\usepackage[mathscr]{eucal}
The first two calls are equivalent and \mathcal will use Euler Script; the last call will provide \mathscr for Euler Script and leave \mathcal as is.
In my opinion only one type of calligraphic letters should be used, be it Knuth's, RSFS or Euler Script.
\mathcal. – doncherry Jun 1 '12 at 10:23