Oi Matheus,
Simplificadamente, o método .sort() espera um Objeto do tipo Comparator. Esse objeto é construído através do método Comparator.comparing.
Já o método .comparing() espera como parâmetro um objeto Function (objeto novo do Java 8). Esse objeto Function é inferido pelo compilador através do lambda s -> s.length().
Para simplificar, o que o compilador vai fazer é transformar s -> s.length() em:
palavras.sort(Comparator.comparing(
new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return s.length();
}
}
));
Para cada elemento da variável palavras será invocado o comparator que por sua vez chama o objeto Function.
Deu para clarear as ideias? Mais importante que entender como é feito, é importante saber como utilizar essa estrutura, não esquenta tanto a cabeça com isso nesse momento, segue com os estudos =)
Abraço!