I presume you mean the OCP8 book by Jeanne Boyarsky and Scott Selikoff.
I know a resource for such strange‑looking generics. Ken Kousen's book Modern Java Recipes (O'Reilly 2017) (Amazon link). Comparator#comparing appears on pages 267 and 280.
Where did you find that method declaration? Was it here? If so, let's see if we can't tease it apart. The method takes one parameter which is a Function<T, U>. so let's have a look at the Function.
The apply() method takes a T and returns an R, only the comparing() method declaration calls that U. So, in the current example, a Squirrel is the T. The λ goes from T=Squirrel to U/R=species, but you can see from the declaration that U/R must implement Comparable. It actually saysR extends Comparable<? super R>because:-
1: Comparable is itself parametrised
2: The class actually implementing Comparable<T> might be a superclass of the current R/U.
In this case you are going from Squirrel (=T) to species (=R/U) which must implement Comparable. Maybe species is a String. So you now have a Function<Squirrel, (??)String>.
So far so good. What the function does is allows the Comparator to extract some information from the Squirrel object that it can use for comparisons. Now it has extracted that information, it can return a Comparator reference which uses species for comparisons.
You could also pass a method reference because all that λ is doing is calling a certain method: Squirrel::getSpecies. That might look like calling a static method but it isn't. It means the Squirrel reference is passed to the left half of the method reference and the right half is then called on that reference.