Isso se chama globbing (link para a documentação do bash, mas isso não é específico para o bash).
Quando você executou rm [0-9].txt , o shell expandiu [0-9].txt para a lista de arquivos presentes no diretório que correspondia a esse padrão. Em seguida, essa lista é passada como um argumento para rm (cada arquivo como um argumento separado).
Então, não, o shell não expandiu para 0.txt 1.txt ... 9.txt , ele olha para os arquivos que combinaram.
Por que você executa apenas rm 5.txt , não há padrão glob para expandir, então o argumento é passado como é para rm , que percebe que o arquivo não existe e reclama.
Tente outra coisa: o mesmo comando rm [0-9].txt , mas em um diretório que não tenha nenhum arquivo que corresponda ao padrão. Você notará rm reclamando novamente, mas desta vez ele dirá:
rm: cannot remove '[0-9].txt': No such file or directory
Isso é o que acontece (por padrão, de qualquer maneira) se um padrão glob não corresponder a nada: o shell não expande e deixa intocado.
Referência POSIX para esse tipo de correspondência de padrões: Notação de correspondência de padrões .