Primera duda: A partir de PHP 7, lo que viene después de los dos puntos es el tipo de valor que devolverá el método (aplica también para funciones).
Segunda duda:
a)
(int) $variable se utiliza para forzar que el contenido de la variable sea del tipo especificado entre paréntesis; normalmente lo usarías para asegurarte de que el valor sea lo que esperas o para comparar, ejemplo: if((int) $variable > 0) { ... }
b) int $variable se utiliza para especificar el tipo de parámetro en una función. Ejemplo: function mi_funcion(string $cadena, int $entero) { ... }
Más info en el
manual de PHP.