Fabiano, muito obrigado! Desse jeito que você fez, explicando linha por linha ficou bem claro.
Mas eu ainda não consegui entender, porque ele não imprimi o 3 na tela. Quando recomeçar a repetição com X:= 2 ele vai imprimir o 2 na tela e depois somar x:= x(que agora vale 2) + 1 e então, quando recomeçar o For ele era para imprimir 3, mas não imprimi e vai direto para o 4. Essa parte de pular um número que eu não entendi ainda, o porque ele pula um número e imprimi um número, nesse caso, ficando de 2 em 2 até 10.
Pula de 2 em dois justamente por que tem um comando dentro do próprio for somando 1 em x.
A instrução for em si já incrementa 1, e tem mais um comando somando 1 dentro do bloco. Só que há apenas uma instrução writeln, ou seja: quando ele faz o ciclo completo de ler todo o bloco e voltar novamente ao cabeçalho para verificar se a condição foi satisfeita (x ser igual a 10), ele já vale 1 a mais do que valia no ciclo anterior.
Em resumo: você tem duas instruções de soma, mas só uma instrução de exibir.
Digo que são duas por que, uma é a soma em si: x := x+1;
A outra é o próprio comportamento da instrução for, que incrementa 1 a cada ciclo. Estou chamando de ciclo, a ação de ler o cabeçalho, entrar no begin, executar o que lá está, e, no end, voltar ao cabeçalho e repetir tudo de novo, até a condição ser verdade (x = 10).