The difference between 'today' and 'now' is the former strips off the time (setting it to 00:00, ie. midnight just past), and the latter includes the time - assuming UTC unless specified otherwise.
I run a theatre's website. Obviously, I need to ensure shows that have already happened do not appear on web pages, so I use something on the lines of:
$listIt = (strtotime($end_date) >= strtotime('today') ? 1 : 0);
where $end_date is the final date in a show series. So if tonight's show is the last, it will stay on the web page until 00:00 tomorrow.
I don't normally include performance times in the date field because some shows have matinées, others don't - so I use a free-form performance time field in the CMS instead (where even 'Time: TBD' is allowed). [The only instance where I DO include the time is when there are two different shows on the same day, to ensure they appear in chronological order.]
So strtotime($end_date) will always return the timestamp at 00:00 that day. If I instead used:
$listIt = (strtotime($end_date) >= strtotime('now') ? 1 : 0);
the function would return $listIt = 0 at all times today - something I don't want.
HTH