Why does it say one day in one of them, but 24 hours in another?
One day is the equivalent of 24 hours. A minute probably ticked by before the next notification so it's no longer 1 day. So they round it to a more "reasonable" hour, hence 23 hours. But the actual time is still closer to 24 hours, but they don't want to push 2 notifications on the same hour because reminding the user twice at a time won't help.
From StackOverflow page on Bounties:
If you do not award your bounty within 7 days (plus the grace period), the highest voted answer created after the bounty started with a minimum score of 2 will be awarded half the bounty amount. If two or more eligible answers have the same score (i.e., their scores are tied), the oldest answer is awarded the bounty. If there's no answer meeting those criteria, the bounty is not awarded to anyone.
If the bounty was started by the question owner, and the question owner accepts an answer posted during the bounty period, and the bounty expires without an explicit award then we assume the bounty owner liked the answer they accepted and award it the full bounty amount at the time of bounty expiration.
Also, a special note from Shadow Wizard:
"expiring in one day" and "expiring soon" are two different events, with different code for each.