What gives is that since the beginning of Android, it's used two separate operating system caches.
Just like with your pc web browser, they degrade over time, activities, and radical change.
Getting updates without those getting scrambled is like rolling dice. No matter how many times you get lucky, and say, score above 2, doesn't change the fact that a pair of ones are still in the dice.
And from what you've described, you've rolled them.
Now you have observables that make no sense - and it's only going to get worse.
If you're not rooted, you can clear one of the caches out by going under the hood.
Power off, then hold volume down while powering on.
You'll get a white screen. Go to HBOOT, then Recovery, then clear cache, then reboot. Don't touch anytime else, breaking your phone is not something to learn the hard way.
Give it a day or two.
If the problem still isn't fixed, backup as much as you can with Helium Backup from the Play Store, go to your main settings, storage, do a factory data reset and then restore your backup.
That's going to clear both of the caches I described.
The fault lies with Google, every phone manufacturer and every carrier in the OTA update game. It would only take a few instructions in the update installer and they're all too lazy to do it.
A stock M8 with Lollipop will surprise you at the battery life once untangled.
As for your charging time, there's no reason to believe that it's telling the truth about charge levels - your caches are dirty and need cleaning before you can believe anything at this point.
Sorry but the good news is, you'll have a great backup strategy - all sorts of things can happen to a phone and often does.
Good luck!