Es sencillo, el parametro predicate es una funcion que TU defines y en la que debes devolver true cuando se cumple la condicion que quieras, y false si no se cumple. Entonces el metodo FindIndex te devuelve el indice de la lista que cumple con esa condicion.
En el ejemplo que te dio mollense y que publicas, FindIndex utiliza una funcion que definiste, en esta caso llamada EndsWithSaurus, que devuelve true si la cadena que insertaste termina con "saurus" y false si no termina con "saurus".
Entonces la primera corrida te regresa como indice 1, porque de acuerdo al ejemplo, es la segunda cadena de la lista (Amargasaurus) la que termina con "saurus", y los indices comienzan con cero, entonces el primer elemento tiene indice 0, el segundo indice 1 y asi sucesivamente.
Si quieres cambiar la condicion, por ejemplo, que encuente el indice de la lista de todos los "pedros" tendrias que definir una funcion llamada BuscaPedro() que regrese true si encuentra a pedro en la cadena, y false si no encuentra a pedro en la cadena, y pasarsela como parametro a FindIndex.