Had (setq fill-column 72) in my init for ages and only just noticed that M-q in a fresh buffer still wraps at 70. (In *scratch* it wraps at 72, which is how I fooled myself.)
fill-column is automatically buffer-local. Setting one of those with setq doesn't touch the default. It makes a local value in whatever buffer is current when the line runs. During init that's usually *scratch*, so *scratch* got 72 and every other buffer started from the untouched default.
(setq fill-column 72) ; local to the current buffer only
(setq-default fill-column 72) ; the value new buffers start with
C-h v fill-column says so right in the help text, "Automatically becomes buffer-local when set". I'd read that sentence a dozen times and never connected it to my own init. Now going through the rest of the file looking for the same mistake.