yield使ったメソッドはコルーチンと言うものの一種で関数は通常再実行されても頭から実行されるけど
コルーチンはreturnした場所から再実行されるもの

実際は状態を内部で持つようにコンパイラで書き換えて実現してる
状態遷移を伴った複雑なシーケンスを列挙するときに便利なのでそういう仕組みがあるけど使わない人は使わない
ゲームの敵キャラなんかの動き、音楽再生なんかにも使えるけど普通のメソッドで作ったほうが良い