Oi, Wallace, tudo bem?
Quando você declara uma variável com const, você está dizendo que a referência que essa variável tem para um valor ou objeto não pode ser alterada. Isso significa que, uma vez que você atribui um valor a uma variável const, você não pode fazer com que essa variável aponte para um novo valor ou objeto. Por exemplo, se você fizer const pi = 3.14;, você não pode depois fazer pi = 3.14159; porque isso tentaria mudar a referência que pi tem para o valor 3.14.
Agora, quando falamos sobre a imutabilidade do valor mantido pela variável, estamos tratando de outra questão. Se o valor atribuído a uma const for um objeto, como um array ou um objeto literal, você não pode reatribuir a variável a um novo objeto, mas pode modificar o objeto em si. Por exemplo:
const meuObjeto = { chave: 'valor' };
meuObjeto.chave = 'novoValor'; // Isso é permitido
meuObjeto = { outraChave: 'outroValor' }; // Isso causaria um erro
No caso de seu exercício, a declaração const pi = 29 dentro do bloco de código cria uma nova variável pi que só existe dentro desse bloco. A variável pi original, declarada fora do bloco com o valor 3.14, não é alterada. Variáveis const (assim como let) têm escopo de bloco, o que significa que se você as declara novamente dentro de um bloco, como uma estrutura de controle ou uma função, você está criando uma nova variável que só é acessível dentro desse bloco.
Espero ter ajudado. Caso tenha dúvidas, conte com o fórum.
Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!