Salve, Maurício!
Esse método exp.exec(alvo) retorna um objeto assim: [ '11a', '11', 'a', index: 0, input: '11a22b33c', groups: undefined ].
Quando a expressão regular não encontra nada, ele retorna null.
O que acontece é que o JavaScript é dinâmicamente tipado, então ele converte o resultado do método para um booleano. 
Se o valor é 0, -0, null, false, NaN, undefined ou é uma string vazia(""), o JS converte para false. 
Todos outros valores são convertidos para true.
No nosso caso, quando o retorno do exp.exec(alvo) é null, ele converte para false e encerra o loop.
Sobre a atribuição, o retorno desse método é armazenado na variável resultado para podermos imprimir o seu valor no console: console.log(resultado).
Uma outra forma de escrever esse while seria:
while(exp.exec(alvo)){
    console.log('passou por aqui');
}
Mas repare que nesse caso não temos acesso ao resultado.