In several manuals (including the official GNU/Linux Command-Line Tools tldp.org) is recommended to use single (or double quotes) to avoid bash to interpret wildcards or regex symbols like caret (^) and dollar ($).
But in some examples that's not necessary to use single/double quotes. For instance:
(1)
$ touch 'fo*'
and
$ touch fo*
creates the same file fo*
in both command line forms.
(2)
$ grep '^foo' file.txt
and
$ grep ^foo file.txt
both search for foo
as a string in beginning of the lines of file.txt.
Why manuals recommend to use single/double quotes to avoid bash interpretation if bash in fact does not interpret some wildcards and regex symbols in first place?