Start here. This is the direct spoken answer to practice first.
Why this question matters
A covering index is useful because one query can obtain every required value from the index, but coverage is query-specific. Making every index wide shifts cost into writes, memory, storage, maintenance, and competing access paths.
A covering index contains every column a query needs, so the plan can avoid looking up remaining values in the base table or clustered index. Columns used for filtering, joining, grouping, and ordering usually belong in the key in a deliberate composite order; output-only columns can often be included at the leaf level. For a frequent selective query, removing thousands of key lookups can reduce logical reads. The benefit must justify duplicating those columns and maintaining them on every relevant write.