Start here. This is the direct spoken answer to practice first.
Why this question matters
Untracked asynchronous work has no clear owner for exceptions, service lifetimes, retries, or shutdown. In a web process that can turn a small convenience into lost business work or code running after its request scope has been disposed.
Fire-and-forget means starting asynchronous work and not awaiting or tracking it. In a web API this is risky because exceptions may be lost, the request scope may end, and the application may shut down before the work finishes. It can also use scoped services like DbContext after they have been disposed. I prefer a proper background queue or hosted service when the work must happen reliably.