Backtracking builds solutions incrementally, abandoning paths that violate constraints. Easy backtracking problems have simple constraints. Hard backtracking problems have multiple interacting constraints, require clever pruning, or demand efficient state management.
The core pattern remains: choose, explore, unchoose. What makes these problems hard is knowing what to prune and when. Without pruning, you're doing brute force with extra steps.