Fallo in uno:
UPDATE `users`
SET `rights` = '[PRO]', points = points - 50
WHERE
`username` = 'somename'
AND points >= 50
AND rights != '[PRO]'
E controlla solo se hai una riga effettuata o meno. Se non hanno abbastanza punti, non si aggiornerà e nemmeno quando avranno già il diritto. Questo evita condizioni di gara.