Estes são caracteres especiais de expressões regulares.
^ é uma âncora para o início da string (Então, nada pode ser antes da partida)
$ é uma âncora para o final da string (então nada pode ser depois da partida)
| é OU como você suspeitava
O =~ diz ao bash extended test que a string à direita é uma expressão regular estendida e sairá com 0 para correspondência e 1 para qualquer outra coisa.
[[ if $response =~ (n|no) ]] é falho porque o if deve estar fora dos colchetes, mas supondo que seja um erro de digitação em sua pergunta, ele será bem-sucedido se a resposta contiver um n . É provável que você queira as âncoras de início e fim para que somente n ou no correspondam.