Sofia, tudo bem?
A variável antes do while é necessária pq precisamos declarar o ponto de partida do nosso loop. Nesse caso vamos iniciar ele em dois (contador = 2), mas ele poderia ter outros valores dentro do nosso universo de possibilidades. Nesse caso nosso universo é o valor 100.
Essa variável não pode estar dentro do while pq toda vez que fossemos iniciar um novo ciclo do laço teríamos novamente o valor 2 para contador, ou seja, ela não seria incrementada e entraríamos no que se chama loop infinito.
Quando iniciamos o comando while ele compara o valor da variável contador com 100 (menor ou igual a ele na verdade). Caso seja menor ou igual ele entra no laço e inicia um ciclo de repetição dos comandos dentro do escopo do while. Nesse caso ele executa o método mostra(contador), que da primeira vez é 2 e logo depois soma mais dois ao valor de contador (fica igual a 4 agora). Ele volta para o while e compara contador com 100 até que contador seja igual a 102. Nesse momento a comparação identifica que o valor de contador não é nem menor e nem igual à 100 e sai do laço.
Bom, espero que tenha ajudado a entender esse ciclo e o papel da variável contador nesse comando de laço de repetição.