Rômulo, é exatamente a persistência que vai sempre te levar ao completo entendimento. Tem que perguntar tudo mesmo.
Vamos lá...
No primeiro loop, a variável serieFibonacci (que, neste momento, é uma string vazia) receberá o valor dela mesma + o valor da variável atual + espaço em branco.
Depois, a variável inteira proximo receberá o valor da variável anterior que é 0, mais o valor de atual que é 1. Ou seja, proximo agora vale 1.
Por fim, anterior recebe o valor de atual que ainda é 1 (anterior valia 0 e agora vale 1) e atual recebe o valor de proximo (atual valia 1 e permanece como 1).
Até agora, temos o seguinte:
serieFibonacci => "1 "
anterior => 1
atual => 1
proximo => 1
No segundo loop, vamos ver o que ocorre:
A variável serieFibonacci recebe o valor dela mesmo + o valor de atual que é 1.
proximo recebe o valor de anterior (1) + valor de atual (1), ficando com valor 2.
anterior (que tem valor 1) recebe o valor de atual (que vale 1), permanecendo como 1.
atual recebe o valor de próximo, alterando seu valor de 1 para 2.
Neste momento, temos:
serieFibonacci => "1 1 "
anterior => 1
atual => 2
proximo => 2
Nos próximos três loops, ficaria assim:
Loop #3
serieFibonacci => "1 1 2 "
anterior => 2
atual => 3
proximo => 3
Loop #4
serieFibonacci => "1 1 2 3 "
anterior => 3
atual => 5
proximo => 5
Loop #5
serieFibonacci => "1 1 2 3 5 "
anterior => 5
atual => 8
proximo => 8
Consegue enxergar os valores dos próximos loops?