A very short (and imprecise) answer could be: a promise can be fulfilled once. But an Observable can emit multiple values. In short, it's like an asynchronous (think promise) event emitter.
This graph (you can find similar 4-quadrants graph in many ReactiveX articles) let you compare Promises and Observables:

Observables are really useful (compared to promises) when you have to deal with multiple values, keep - or not - the ordering, and takeUntil really shines. If you're already fluent with promises, have a quick read of The introduction to Reactive Programming you've been missing if a great way to get started with Observables.