NP-hard and NP-complete problems deal with the distinction between problems that can be solved in polynomial time versus those where no polynomial time algorithm is known. The document discusses key concepts like P vs NP problems, the theory of NP-completeness, nondeterministic algorithms, reducibility, Cook's theorem stating that satisfiability is in P if and only if P=NP, and examples of NP-hard graph problems like graph coloring. Cook's theorem shows that the satisfiability problem is in NP and is NP-complete, meaning that if any NP-complete problem can be solved in polynomial time, then NP would equal P.