Olá!
Sobre a sua primeira dúvida, caso a classe Comparator tivesse mais de um método que precisasse ser sobrescrito, você precisaria informar qual método deve ser utilizado na sua expressão lambda. Por exemplo, se a classe Comparator tivesse um método compare e um método equals, você precisaria informar qual método deve ser utilizado na sua expressão lambda da seguinte forma:
Comparator<T> comparator = (obj1, obj2) -> obj1.compare(obj2);
Isso informaria que o método compare deve ser utilizado na sua expressão lambda.
Já sobre a sua segunda dúvida, é possível utilizar expressões lambda em qualquer método que receba um objeto do tipo funcional, ou seja, uma interface que tenha apenas um método abstrato. Isso inclui a interface Comparator, que é uma interface funcional.
Espero ter ajudado e bons estudos!