Come altri hanno già detto, la semantica precisa dipende dal linguaggio di programmazione che usa i termini, quindi darò una valutazione puramente linguistica.
"Iterable" è una parola coniata di recente, che si riferisce ovviamente a "iterating" e agli "iterators" che molte lingue hanno incorporato. Di conseguenza, tali tipi quasi certamente supportano un iteratore, ma non necessariamente qualcos'altro, e non necessariamente tutto ciò che va oltre la funzionalità di base dell'iteratore: elaborare ogni oggetto una sola volta. L'inversione, l'eliminazione, la misurazione delle distanze ecc. Possono o non possono essere supportate.
"Enumerable" si riferisce a enumerare le cose, che può significare lo stesso di iterare, ma solo se la lingua non usa già "iterable" a tale scopo. Se una lingua ha entrambi, "enumerabile" significa quasi certamente qualcos'altro, probabilmente qualcosa di più potente. Molto probabilmente, supporterà la nozione di connettere ciascun elemento con un indice numerico univoco e probabilmente consentirà l'accesso casuale (ad esempio il recupero del terzo elemento prima del primo e del secondo).
Questo è tutto il significato che puoi ragionevolmente dedurre solo dalle parole. In qualsiasi situazione concreta, fare riferimento ai documenti API standard della libreria.