Willians, bom dia!
Podemos sim, vamos passar linha a linha!
foreach($tipos as $tipo) :
Aqui estamos pegando uma array chamada $tipos e falando que pra cada valor dela vamos criar uma variável chamada $tipo que vai ser usada naquele  único laço da repetição.
$esseEhOTipo = $produto->getTipoProduto() == $tipo;
Nessa linha ele cria uma variável $esseEhOTipo, que tem como função verificar o tipo do produto, pra isso ele vai até a classe produto com o $produto->getProduto(), pega esse retorno e compara com o $tipo atual do laço
$selecao = $esseEhOTipo ? "selected='selected'" : "";
Aqui estamos verificando a seleção do próprio usuário, verifica o $esseEhOTipo se essa variável estiver setada como verdadeira ele marca $selecao como selected='selected' caso o que estiver lá for falso ele marca ele deixa vazio indicando que aquela não é a solução.
?>
Indica o fim do bloco em PHP
<option value="<?=$tipo?>" <?=$selecao?>>
Cria um option com o nome do tipo atual da seleção, que está sendo representado por $tipo e adiciona também a verificação da seleção podendo ser ou selected ou vazia
 <?=$tipo?>
Por fim ele mostra o texto que vai aparecer para o usuário, que seria o tipo atual do laço
Espero ter ajudado e bons estudos!