Od:
$admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username");
[...]
if ($settings['create_admins'] > 0 || $admin['super_admin'] > 0 ) {
$admin jest typu PDOStatament który jest klasą, a nie tablicą. Dlatego nie możesz wywołać [] operator na nim.
Również naprawdę nie powinieneś zawsze przypisywać $admin do wyniku zwracanego przez każdą metodę, ponieważ większość PDOStatament metody zwracają wartości logiczne:
$admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username");
$admin->bindValue(':username', $_SESSION['user']);
$admin->execute();
Aby pobrać super_admin kolumna od admin tabelę, którą należy dodać (po execute() oświadczenie):
$result = $admin->fetch(PDO::FETCH_ASSOC);
który się zapełni (mam nadzieję, że zależy to od schematu tabeli) $result['super_admin'] .