Start here. This is the direct spoken answer to practice first.
Overview
Writable signals store source state, computed signals derive values, and effects synchronize with non-reactive systems.
I use a writable signal for state the application owns and can change. I use computed for a value that can be derived from other signals, because Angular memoizes it and tracks its dependencies. I use an effect for a real side effect such as logging, storage, or coordinating an imperative API, not for copying one signal into another.