En español tenemos un solo verbo, poder, que se conjuga en todos los tiempos: puedo, podré, he podido, podría, podía. En inglés, can es un verbo modal y no tiene todas las formas. Cuando can no cabe, lo sustituye be able to.
Esa es la base de la diferencia. Vamos por partes.
Can: habilidad y posibilidad
Can expresa habilidad o posibilidad general en el presente. Su forma de pasado es could.
I can speak three languages. (Hablo tres idiomas).
She can swim very well. (Nada muy bien).
When I was younger, I could run for hours. (Cuando era más joven, podía correr durante horas).
Como verbo modal, can no lleva to después, no añade -s en la tercera persona y va sin auxiliar en oraciones negativas e interrogativas.
Be able to: cuando can no es posible
Can solo tiene dos formas: can (presente) y could (pasado). En cualquier otro tiempo o estructura, hay que recurrir a be able to.
En el futuro
I will be able to help you tomorrow. (Podré ayudarte mañana).
No decimos I will can help you. Can no admite otro auxiliar delante.
En tiempos perfectos
I haven't been able to sleep lately. (No he podido dormir últimamente).
She had been able to finish the project on time. (Había podido terminar el proyecto a tiempo).
Después de otro verbo o preposición (en infinitivo)
I want to be able to read in English. (Quiero poder leer en inglés).
It's important to be able to ask for help. (Es importante poder pedir ayuda).
Cualquier estructura que requiera un infinitivo o un participio obliga a usar be able to.
El caso especial: could vs. was/were able to
En el pasado, could y was/were able to no son intercambiables.
Usamos could para hablar de una habilidad general, algo que sabías o podías hacer normalmente:
When I lived in Paris, I could speak French fluently. (Cuando vivía en París, hablaba francés con fluidez).
Pero cuando hablamos de un logro concreto en una ocasión específica, se usa was/were able to (o, en un registro más coloquial, managed to):
The fire was huge, but the firefighters were able to put it out. (El incendio era enorme, pero los bomberos consiguieron apagarlo).
I was able to catch the last train. (Logré coger el último tren).
En estos casos, could put it out o could catch the last train le sonaría raro a un nativo. La regla rápida: si en español usarías conseguí o logré en lugar de podía o pude, en inglés usaremos was/were able to.
En la forma negativa, en cambio, couldn't funciona perfectamente para ambos casos:
I couldn't catch the last train. (No pude coger el último tren).
Una nota sobre el registro
Be able to es ligeramente más formal que can. Cuando puedes usar cualquiera de los dos (en presente afirmativo, por ejemplo), can es la opción por defecto en la conversación. Reserva be able to para los casos en que can no cabe gramaticalmente, o cuando quieras un tono algo más formal.
Resumen
Can/could: habilidad o posibilidad en presente y pasado general.
Be able to: futuros, perfectos, infinitivos. Cualquier tiempo donde can no quepa.
Was/were able to: logro concreto en el pasado (≈ conseguí, logré).