No question that Linux is loveable.
The packaging and tracking of files used in Linux is really complex and amazing. One of the great things that differentiates Linux from another well known OS is that when we upgrade a package, we often only need to update a few files instead of a truck-load of bloat. Your preferred package manager is responsible for keeping up with what you need in order to keep things working. So whether you need to update any given driver when you upgrade very much depends on lots of things.
Another thing about Linux is that some decisions are left up to the user, like configuration settings. Usually, an upgrade will try to keep the settings you have which match your software with your hardware and preferences. But sometimes that doesn't go flawlessly, and sometimes it can't happen due to the nature of the upgrade. Linux is getting better all the time, but given the complexity of the whole ball of wax (users, machines, packages, interoperability), the road is not without the occaisional bump. If it worked before the upgrade, but it doesn't work after, you might want to look into the configuration files for the package. Some packages include small programs which will look at your hardware, etc and help to set-up your configuration.
If you use older hardware (like I and lots of others do), sometimes Linux leaves parts of our rigs behind in the effort to move forward for the biggest part of the community.
I hope that helps-