тут кстати путаница небольшая. есть же итерабли которые позволяют итерироваться один раз, несколько раз и т.д. иногда под “итератором” подразумевают объект, возвращаемый iter(iterable), то есть итератор==объект, по которому происходит итерирование.
всякая селедка - рыба, но не всякая рыба - селедка. Генератор - это iterable, каждый свой итератор он вычисляет и возвращает. Таким образом существенно экономит память. Но не всякий iterable == генератор
итерабля это любой объект, который имплементирует протокол итерирования. генератор это итерабля, которая не хранит все значения, а вычисляет и отдает их по одному.