Jeżeli dobrze kojarzę, to hasRole to nic innego jak getter w encji user domyślnie wbudowane w FOSUserBundle. Sprawdza czy user ma ROLE. Ogólnie w FOSUserBundle działa to na zasadzie, że możesz użytkownikowi dodać kilka ról, np. masz:
ROLE_USER
ROLE_MODERATOR
ROLE_REDAKTOR
ROLE_ADMIN
i chcesz aby user X miał redaktora, ale nie moderatora. Można to zrobić w postaci hierarchi, że user > redaktor, user > moderator, a nie moderator > redaktor. I wówczas user ma przypisane dwie role.
Wydaje mi się że nie ma różnicy

isGranted to po prostu wrapper na
$this->container->get('security.authorization_checker')->isGranted($attributes, $object)
gdzie o
dwołujesz się do zalogowanego obecnie user, a hasRole możesz sprawdzić role dla innego użytkownika.
Troche chaotycznie to napisałem