vertex cover
Imagine a city map where edges are streets and vertices are intersections, and you want to place a guard at some intersections so that EVERY street has a guard at one of its two ends. The fewest guards that watch all streets is a minimum vertex cover. The vertex cover problem asks whether the job can be done with at most k guards.
Formally, a vertex cover of an undirected graph G is a set of vertices such that every edge has at least one endpoint in the set. The decision problem VERTEX-COVER takes G and a number k and asks whether a vertex cover of size at most k exists. It is in NP: a candidate set of k vertices is the certificate, and a verifier scans every edge in polynomial time to confirm each is covered. The optimization version, find the smallest cover, is the NP-hard cousin.
VERTEX-COVER is NP-complete, and the cleanest proof rides on a beautiful identity: a set S is a vertex cover of G if and only if the remaining vertices (everything NOT in S) form an independent set, no edge runs between them. So G has a vertex cover of size k exactly when G has an independent set of size n - k, where n is the number of vertices. This gives an immediate reduction to and from INDEPENDENT SET, and through it from 3-SAT, so vertex cover joins the standard toolkit. Importantly, vertex cover is also a star example of coping with NP-hardness: it has a trivial factor-2 approximation (repeatedly pick both endpoints of an uncovered edge) and is fixed-parameter tractable in k, so the hardness is far from a dead end.
Take a triangle plus one extra edge: vertices {1,2,3,4} with edges 1-2, 2-3, 1-3, 3-4. The set {1,3} covers every edge: 1-2 by 1, 2-3 by 3, 1-3 by both, 3-4 by 3. So a vertex cover of size 2 exists. Its complement {2,4} is an independent set, illustrating the cover/independent-set duality.
VERTEX-COVER: choose at most k vertices touching every edge. The complement of a cover is an independent set.
Vertex cover is NP-complete in general, yet it is one of the most TRACTABLE NP-complete problems in practice: a 2-approximation is easy and it is fixed-parameter tractable in k.