Start here. This is the direct spoken answer to practice first.
Why this question matters
A thread is an execution resource, while a Task represents an operation and its eventual completion. Keeping those concepts separate makes asynchronous I/O, CPU scheduling, cancellation, and shutdown ownership much easier to design correctly.
A Thread is an actual execution resource managed by the operating system. A Task is a higher-level .NET abstraction that represents work or a future result. A Task may run on a thread-pool thread, complete from I/O, or represent an operation that has not yet completed. Most application code should use Task because it composes better with async/await and cancellation.