Почему с данным кодом PHP скрипт зависает?
Потому что условие $a != count($games_list) всегда будет выполняться, т. к. на первой итерации цикла  после unset($games_list[$a]) в массиве ничего не останется и count($games_list) будет давать 0.
Перепишите код вот так:for ($a = 0, $count = count($games_list); $a != $count; $a++) {
    if (isset($games_list[$a]['status'])) unset($games_list[$a]);
}
Или так:foreach ($games_list as $a => $game) {
    if (isset($game['status'])) unset($games_list[$a]);
}
Или даже так:$games_list = array_filter($games_list, function ($game) {
    return !isset($game['status']);
});
Потому-что при первом проходе цикла count($games_list) == 1; $a == 0;. Условие неравенства выполняется.
При втором проходе (поскольку массив уменьшился) будет так: count($games_list) == 0; $a == 1;, то есть условие неравенства выполняется опять. Ну и так далее.