In practice
Use it to time scripts that need the document structure but not its assets; it fires far earlier than the load event.
A late DOMContentLoaded almost always points at synchronous scripts blocking the parser.
Why it matters
It marks the moment a page becomes structurally usable, which is what scripts and measurement usually depend on.
The gap between it and full load tells you how much of the wait is media rather than markup.