O ponto de exclamação significa muitas coisas e, às vezes, você não pode dizer muita coisa além de "isso é perigoso, tenha cuidado".
Como outros já disseram, em métodos padrão, é freqüentemente usado para indicar um método que faz com que um objeto se mude, mas nem sempre. Note-se que muitos métodos padrão mudar seu receptor e não tem um ponto de exclamação ( pop
, shift
, clear
), e alguns métodos com pontos de exclamação não mudam seu receptor ( exit!
). Veja este artigo por exemplo.
Outras bibliotecas podem usá-lo de maneira diferente. No Rails, um ponto de exclamação geralmente significa que o método lançará uma exceção em caso de falha, em vez de falhar silenciosamente.
É uma convenção de nomes, mas muitas pessoas a usam de maneiras sutilmente diferentes. No seu próprio código, uma boa regra de ouro é usá-lo sempre que um método está fazendo algo "perigoso", especialmente quando existem dois métodos com o mesmo nome e um deles é mais "perigoso" que o outro. "Perigoso" pode significar quase qualquer coisa.