Les réponses varient d'un programmateur à l'autre. Voici les miennes:
1) Pas nécessairement, tout dépend de ce que tu veux faire. Par exemple, pour un objet clickable, je gère les évènement directement dans la classe même, via une méthode. Mais pour des évènement d'ordre général, comme sf::Closed, je le gère directement dans le main.
2) Malheurement non. Il faut effectivement comparer les coordonnées une par une pour savoir quel objet a été "clicker". Mais bon, un ordinateur calcul très rapidement, mais il ne faut pas exagérer non plus dans le nombre d'objet sélectionnable à la souris.