When you do \let<token-a>=<token-b>, TeX creates a pointer to the memory location where <token-b> is stored. Primitives are stored with the name they had at the beginning of the TeX run, before the format file is loaded; there would be no other way to represent them; maybe primitive \def would have been better, but Knuth chose not to and to represent a primitive just with its (primitive) name. So if you do
\let\define\def a \show\define will output \define=\def even if \def is redefined afterwards. Whenever \show<token> says <token>=\xyz you know that \xyz is a primitive and <token> has the same meaning as that primitive. So, in LaTeX, \show\@@input outputs
> \@@input=\input. If you do
\let\define\def \let\let\define you make \let point to the same memory location \define points to, that is, the original memory location of \def. Of course you've lost the \let primitive, unless you saved it beforehand with \let\primitivelet\let (or similar). TeX follows instructions: if you want to shoot yourself in the foot, it will gladly let you to. Only some (inaccessible) tokens are protected against redefinition because one can't really access their names.
Actually, one of the aims of the LaTeX3 project is to rename all primitives, so as to avoid problems when a user does \renewcommand{\box}{something}: after saving every primitive under a new name, LaTeX3 code only uses those new names and not the original ones.
This doesn't happen with macros: if you say
\def\macro{replacement} \let\newmacro\macro a \show\newmacro will not have any trace of \macro. Indeed, \macro could then be redefined without changing the meaning of \newmacro.
Note: The fact that \let\define\def\show\define prints \define=\def doesn't mean that TeX remembers what \def is in case one also does \define\def{Oops}. After the = sign \def is just a representation of the meaning, not the actual command. With pdftex one can however access primitives by prefixing their name with \primitive. So \primitive\input will execute the primitive meaning of \input independently of any redefinition of \input.
Note that \meaning and \show are identical in this respect; the difference is that \show interrupts the TeX run and shows the meaning on the terminal, while \meaning simply prints it (TeXnically, it produces a representation of the meaning by characters of category code 12, 10 for spaces).