Olá, Daniel!
Na expressão regular, o caractere "^" indica o início da string e o caractere "$" indica o final da string. Portanto, na primeira opção de expressão regular, "/^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/" estamos verificando se a string começa e termina exatamente com o padrão especificado. Ou seja, ela só será considerada válida se tiver exatamente o formato "XXX.XXX.XXX-XX".
Já na segunda opção de expressão regular, "/[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}/", não estamos verificando se a string começa e termina exatamente com o padrão especificado. Ela apenas verifica se o padrão está presente em qualquer parte da string. Ou seja, se a string tiver o formato "XXX.XXX.XXX-XX" em qualquer posição, será considerada válida.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓