Dismistidicando o codigo temos o seguinte
select p.* c.nome as categoria_nome
Imprima tudo que tem na em da tabela p (onde 'p' será um "apelido" para tabela produto) e também a coluna 'nome' da tabela c(onde 'c' será um "apelido" para tabela categorias) .
from produtos as p
Da tabela produto que será chamada de 'p'.
join categorias as c
Interligado com a tabela categorias que será chamado de 'c'.
on p.categoria_id = c.id
Aqui diz que valor no campo p.categoria_id(campo categoria_id da tabela produtos) é definido pelo valor do campo c.id(campo id da tabela categorias) criando uma ligação entre as duas tabelas.
Quando se interliga tabelas (join) as associações são ligadas por chaves nesse caso p.categoria_id é a chave estrangeira quem vem da tabela categorias, onde c.id é a chave principal da tabela categorias.