MDNの定義から”イテレーターはシーケンスおよび潜在的には終了時の戻り値を定義するオブジェクトです。
MDN | 開発者向けのウェブ技術 イテレーターとジェネレーター より
反復処理のための順番待ちの処理を複数格納する場合、通常は配列にしますが、イテレータはこの処理を順番に一回のみ消費していきます(複数回も可)。
このイテレータにジェネレータ関数を組み合わせることで、実行が連続していない反復アルゴリズムが可能になります。
つまり、反復処理を好きな時点で一時停止できることになります。
イテレータとジェネレータというと別物のように感じますがジェネレーターはイテレータの一種と定義してあります。
このジェネレータはyield と呼ばれるキーワードを使って反復処理を停止状態にすることができます。
たとえば以下のサンプルコード。
※通常の関数をジェネレータにするにはfunction*とアスタリスクを付けます。

上のコードはクラス名”next”をクリックするとgStep.next()が実行されます。
nextメソッドはcounterジェネレータを実行し、yieldキーワードの箇所まで実行すると停止します。
次のgStep.next()が実行されるとまた停止した箇所から反復処理を再開し同じくyieldキーワードの箇所まで実行すると停止します。
これでcounterを実行するたびに停止状態の反復処理が再開されます。
イテレータとジェネレータサンプルコード:
https://labo.studio-happyvalley.com/iterator/