The change that gets the most attention is the shift away from blocking webRequest to declarativeNetRequest, but other important changes are moving from background pages to service workers, and disallowing third party JS.
Service workers are particularly problematic for some extensions, as the background script cannot execute indefinitely. I included an entire chapter on mv2->mv3 since there was so much to cover.