\documentclass{article}
\begin{document}
\makeatletter
The letter a: \meaning a.
\ifdefined a IS \else is NOT \fi defined,
it \ifx a\relax IS \else is NOT \fi relax,
The dollar: \meaning $.
\ifdefined $ IS \else is NOT \fi defined,
it \ifx $\relax IS \else is NOT \fi relax,
%$
The upcaret: \meaning ^.
\ifdefined ^ IS \else is NOT \fi defined,
it \ifx ^\relax IS \else is NOT \fi relax,
The underscore:\meaning _.
\ifdefined _ IS \else is NOT \fi defined,
it \ifx _\relax IS \else is NOT \fi relax,
\def\fud{FUD}
macro fud: \meaning \fud.
\ifdefined\fud IS \else is NOT \fi defined,
it \ifcsname fud\endcsname IS \else is NOT \fi cs-defined,
it \ifx\fud\relax IS \else is NOT \fi relax,
and it \@ifundefined{fud}{is NOT}{IS} @defined.
macro foo: \meaning \foo.
\ifdefined\foo IS \else is NOT \fi defined,
it \ifcsname foo\endcsname IS \else is NOT \fi cs-defined,
it \ifx\foo\relax IS \else is NOT \fi relax,
and it \@ifundefined{foo}{is NOT}{IS} @defined.
After the @ifundefined, however: \meaning \foo.
\ifdefined\foo IS \else is NOT \fi defined,
it \ifcsname foo\endcsname IS \else is NOT \fi cs-defined,
it \ifx\foo\relax IS \else is NOT \fi relax,
but it \@ifundefined{foo}{is still NOT}{IS} @defined.
Try again, without the @ifundefined.
macro fuu: \meaning \fuu.
\ifdefined\fuu IS \else is NOT \fi defined,
it \ifcsname fuu\endcsname IS \else is NOT \fi cs-defined,
and it \ifx\fuu\relax IS \else is NOT \fi relax.
After testing, however: \meaning \fuu.
\ifdefined\fuu IS \else is still NOT \fi defined,
it \ifcsname fuu\endcsname IS \else is still NOT \fi cs-defined,
and it \ifx\fuu\relax IS \else is still NOT \fi relax.
[\expandafter\ifx\csname fuu\endcsname\relax test1 \else test2 \fi],
After ifx csname concoction: \meaning \fuu.
\ifdefined\fuu IS \else is NOT \fi defined,
it \ifcsname fuu\endcsname IS \else is NOT \fi cs-defined,
and it \ifx\fuu\relax IS \else is NOT \fi relax.
\let\zonk\relax
Let zonk to relax: \meaning \zonk.
\ifdefined\zonk IS \else is NOT \fi defined,
it \ifcsname zonk\endcsname IS \else is NOT \fi cs-defined,
it \ifx\zonk\relax IS \else is NOT \fi relax,
and it \@ifundefined{zonk}{is NOT}{IS} @defined.
\let\zoob\zelda
Let zoob to a undefined token: \meaning\zoob.
\ifdefined\zoob IS \else is NOT \fi defined,
it \ifcsname zoob\endcsname IS \else is NOT \fi cs-defined,
it \ifx\zoob\relax IS \else is NOT \fi relax,
and it \@ifundefined{zoob}{is NOT}{IS} @defined.
\let\two\one
\let\three\two
\let\four\three
\let\zoon\four
Let zoon indirectly to a undefined token: \meaning \zoon.
\ifdefined\zoon IS \else is NOT \fi defined,
it \ifcsname zoon\endcsname IS \else is NOT \fi cs-defined,
it \ifx\zoon\relax IS \else is NOT \fi relax,
% but do NOT use \@ifundefined, it'll just set it to \relax
%and it \@ifundefined{zoon}{is NOT}{IS} @defined.
\let\one\relax
Now, let that initial token to relax: \meaning \zoon.
\ifdefined\zoon IS \else is NOT \fi defined,
it \ifcsname zoon\endcsname IS \else is NOT \fi cs-defined,
it \ifx\zoon\relax IS \else is NOT \fi relax,
%BUT it still \@ifundefined{zoon}{is NOT}{IS} @defined.
Ie. no change: the chain was `collaped'.
\let\zook=a
Let zook to a plain letter: \meaning\zook.
It expands to `\zook'.
\ifdefined\zook IS \else is NOT \fi defined,
it \ifcsname zook\endcsname IS \else is NOT \fi cs-defined,
it \ifx\zook\relax IS \else is NOT \fi relax,
and it \@ifundefined{zook}{is NOT}{IS} @defined.
\end{document}