Olá!
Quando declaramos a lista como List<DadosEpisodio>, estamos dizendo explicitamente que ela vai conter apenas objetos do tipo DadosEpisodio. Isso é possível porque a classe DadosEpisodio já está criada e você está usando ela para transformar os dados JSON em objetos Java. O framework de desserialização é quem faz esse trabalho, convertendo o JSON para objetos Java, desde que o conteúdo do JSON esteja compatível com a estrutura da classe.Já quando você usa List<?>, está permitindo que a lista tenha objetos de qualquer tipo, o que não é o ideal aqui, porque você quer garantir que todos os elementos sejam do tipo DadosEpisodio.
Vale lembrar que a lista em si (List) não faz a conversão do JSON. Quem faz isso é o framework (como o Jackson), que utiliza as classes e suas anotações para realizar o mapeamento corretamente.
Por exemplo, quando você usa a anotação @JsonAlias("Episodes") na sua lista de DadosEpisodio, está informando ao Jackson que o campo "Episodes" do JSON deve ser associado à lista presente na sua classe DadosTemporada.