It's proably becasue the tag in normal format outputs a string representation of the date, try the below which causes the output to be done as a UNIX Epoch time :
(Tested on EE 2.7.1)
{if {current_time format="%U"} > ( {entry_date format="%U"} + 7776000 ) }
<div id="message">
<h4>Your safety training is out of date.</h4>
</div>
{/if}
Or , you could use a PHP flavour (if EE is having a string/number issue in the tags) :
PHP On Output
<?php
if ( intval('{current_time format="%U"}') > ( intval('{entry_date format="%U"}') + 7776000 ) { ?>
<div id="message">
<h4>Your safety training is out of date.</h4>
</div>
<?php } ?>