I know a number of ways to fix this (e.g. \usepackage[T1]{fontenc}), but I want to understand what's happening in the following example.
\documentclass{article}
\begin{document}
\noindent
\$ \% \& \{ \} \_ \# \textbackslash \\
\ttfamily \$ \% \& \{ \} \_ \# \textbackslash \\
\verb+$ % & { } _ # \ +
\end{document}

Why does attempting to obtain a
\ttfamilybrace, underscore or backslash result in the substitution of the ordinary roman symbol? The glyphs are clearly not missing, because verbatim mode can access them.How exactly is verbatim mode accessing these glyphs?
Deleting the braces and the backslash, so that the underscore is the only remaining 'problem' character eliminates the font warnings, despite the fact that a substitution is still taking place. Why is this?