Su questa riga ci va && e non &
Codice PHP:
if($status == AUTH_LOGGED auth_get_option("TRANSICTION METHOD") == AUTH_USE_LINK){ 
Nella query puoi usare direttamente $_POST["abil_id"] invece di istanziare una nuova variabile che spreca solo memoria.
Stessa cosa per $username=$user["username"]; usa direttamente $user["username"].

Nella pagina send_abilities.php usi sia $_GET che $_POST, puoi arrivarci in 2 modi diversi su tale pagina? In tal caso discrimina in partenza i due casi con
Codice PHP:
if(isset($_GET['uid'])) {
   
//fa quello che devi fare in questo caso
}
elseif(isset(
$_POST['abil_id'])) {
   
//fa quello che devi fare in quest'altro caso

Da come vedo il tuo codice non puoi avere sia variabili $_GET che $_POST attive contemporaneamente.

Sei sicuro che $user e $status contengano i dati che ti aspetteresti? Non darlo per scontato, verificalo.