There are few and rare times that breaking changes are introduced in my opinion, Discourse goes through a lot of tests, when possible breaking changes are going to be introduced (for example in some method in the Rails code or javascript) usually throws a warning in the console, for example:
“someMethod is deprecated since Discourse vX.X, use x instead. Removal in Discourse vX.Y.Z”
I don’t think I’ve ever seen such stable software, and with all the facilities in the world to update almost without complications, no need to even worry about migrations or precompiling assets
(As long as the official guides are used)