Start here. This is the direct spoken answer to practice first.
Overview
Signals represent a current reactive value; Observables represent values arriving over time with stream operators.
I use signals for synchronous state that the UI needs to read now, such as selected filters, derived totals, or component state. I use RxJS when the problem is an asynchronous stream where cancellation, debouncing, merging, retries, or event ordering matters. They complement each other: an HTTP search pipeline may remain an Observable while its latest display state is exposed as a signal.