Geralmente, você só precisa escapar uma vez para tornar um caractere especial considerado literal. Às vezes você tem que fazer isso duas vezes, porque seu padrão é usado por mais de um programa.
Vamos dissociar o seu exemplo:
man gcc | grep \.
Este comando é interpretado por dois programas, bash intérprete e grep . O primeiro escape faz com que bash knows \ seja literal, então o segundo é passar por grep .
Se você escapar apenas uma vez, \. , bash saberá que esse ponto é literal e passará . para grep . Quando grep vê isso . , ele acha que o ponto é um caractere especial, não literal .
Se você escapar duas vezes, bash passará o padrão \. para grep . Agora, grep sabe que é um ponto literal.