Como acho que essa questão é mais sobre o que * faz (e não o rm), vamos tentar outra abordagem.
Se você não tem certeza do que o * faz, você pode "testar" primeiro usando um comando inofensivo como o echo.
Antes de executar isso, tente adivinhar o que eles mostrarão se você executá-los no diretório home.
echo *
echo .*
Mas primeiro vamos criar um playground para podermos brincar com as estrelas e ver o que acabamos fazendo.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
Agora neste diretório, temos isto:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Agora observe o que o * expande usando o comando echo:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Então, vamos ver o que acontece com o comando rm
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Como você pode ver, ele removeu apenas o arquivo2, já que * só foi expandido para o arquivo2.
Se você digitar rm -rf. *, Isso seria o mesmo que escrever
rm -rf . .. .file1
E para ser honesto, isso não parece divertido;)
Espero que isso esclareça a * parte da sua pergunta.
Atualização:
No entanto, como Ankur Goel aponta, há algum tipo de proteção embutida no rm (algo incomum para os comandos do shell):
Vamos criar um novo playground:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Agora temos isso novamente, mas com o test1 de propriedade do root como proteção se
rm começa a enlouquecer.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Então, vamos remover tudo:
cj@zap:~/star_test/test1/test2/test3$ rm -rf .*
rm: cannot remove directory '.'
rm: cannot remove directory '..'
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2
E parece que o rm não foi removido. e .. mesmo se disséssemos a ele !!!
Então, após essa longa resposta, é seguro remover tudo em um diretório com isso:
rm -rf * .*
Mas eu usaria isso com cuidado, já que não tenho certeza se todas as implementações do rm se comportam assim!