Isso não faz parte de rm , mas de uma parte do seu shell. * é um glob que seu shell expande e passa para rm na forma de argumentos ( rm nunca vê um literal * , a menos que o glob não corresponda a nada, nesse caso um literal * é passado). Os * globs padrão não se expandem para incluir nomes de arquivos que começam com um ponto, que inclui . e .. . Por exemplo:
$ tee foo bar baz .foo .bar .baz < /dev/null
$ echo *
bar baz foo
$ echo .*
. .. .bar .baz .foo