Sergio, vamos lá.
Pergunta 1:
Sempre que você faz uma requisição AJAX o servidor irá retornar um dado (no caso um JSONP) é no parâmetro retorno que "pegamos" esse dado, pois a função que estamos passando é o callback de sucesso da requisição AJAX:
$.get('http://mirrorfashion.caelum.com.br/treinamentos', function(retorno) {
console.log(retorno);
// Implementação vem aqui;
}, 'JSONP');
No caso desta requisição teremos no console:
Object {treinamentos: Array[3]}
Veja que o retorno é um Object com a propriedade treinamentos que contém um Array com 3 elementos.
Pergunta 2:
Você está fazendo uma requisição para o servidor da Caelum, através do método GET com a URL http://mirrorfashion.caelum.com.br/treinamentos. O servidor está preparado para devolver um retorno para quem fizer esse tipo de requisição.
Aqui para entender o porque não chegou o objeto correto preciso que você me mande o código que implementou.
Fica a dica de assistir o curso de HTTP aqui da Alura, para entender melhor a questão.
Pergunta 3
Se você analisar o retorno retorno do console na primeira questão verá que o servidor retorna um objeto com a propriedade treinamentos por isso pegamos ele.
Agora o each
Como a propriedade treinamentos é um Array podemos usar o método each do jQuery que nos permite acessar cada (each) elemento do Array. Imagine como se ele fosse um for percorrendo cara propriedade do Array, só que de forma funcional.
Vai aqui um exemplo pra você testar no console do navegador.
var meuArray = [
{nome: 'a'},
{nome: 'b'},
{nome: 'c'}
];
$.each(meuArray, function() {
console.log('A propriedade atual do Array é:', this.nome);
});
Neste casso o this é a propriedade atual do Array, assim conseguimos acessar a propriedade nome.
Caso algo não tenha ficado claro, ou eu expliquei de uma forma confusa, pode mandar as novas dúvidas que tento explicar novamente de outra forma.