>>これはタスク中でyieldと言われている処理をする事でタスクの実行をプログラムのその行で中断し
古典的タスクシステムの実装での話しなら
yieldで分割される単位で実行関数作って、状態が変わったら登録関数切り替え。
タスクを通して維持される情報はタスクのワークに、が古典的タスクシステムのやり方かと。

ちなみに古典的なリスト形式じゃなくてツリー構造にして子の生存管理を親に任せれば
上で言ってるタイトルとゲームオーバーと、みたいなシーンも君の言うFSMと同じように階層管理できる。

階層タスクはボス戦艦の船体の親タスクと砲台の子タスク、みたいな使い方でもよく使われる。
リストでも同じことできるけど、親の座標が子の座標に影響したり親がやられたら子も全滅、みたいなのは
ツリーで作った方が楽。