Olá, Lucas, como vai?
A explicação conceitual está adequada ao apontar que a condição nunca muda. Além disso, os exemplos que você trouxe mostram duas formas corretas de evitar esse tipo de problema. No primeiro caso, o uso do for com range garante que o laço tenha início, meio e fim bem definidos, o que é ideal quando a quantidade de repetições já é conhecida. No segundo caso, o while True combinado com incremento do contador e uso do break cria uma condição de parada explícita, o que resolve o loop infinito e mantém o controle da execução.
Como exemplo, no caso do while da atividade, bastaria adicionar contador += 1 dentro do laço para que a condição fosse eventualmente falsa e o loop fosse encerrado após dez execuções.
O fórum segue à disposição caso queira aprofundar mais esse tema ou trocar ideias com a comunidade.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!