Apres quelques recherches, je crois pouvoir t'affirmer que...les zones de collision correspondent très bien au masque :p
Le problème vient d'autre part, il vient du fait que tu testes les collisions avec le point correspondant à l'origine de ton sprite_perso. Or ce point, c'est le coin haut-gauche du sprite. Vérifie toi même, ton code gère les collisions avec ce point la uniquement, ce qui fait que tu as l'impression que les zones de collisions sont au mauvais endroit.
Si tu veux résoudre ce problème, je te conseille de réécrire ton code de façon plus propre, plus claire, moins redondante (parce que certaines actions sont répétées plusieurs fois dans la même frame, comme ta vue qui est réinitialisée 2 ou 3 fois), ca sera plus lisible et plus compréhensible parce que la...ben c'est dégueulasse :p
Et évite les variables globales