Finding the year using strtotime vs calculating manually
The first version, using strtotime(), is definitely more maintainable.  The code obviously says exactly what you intend.  I like it.

The second version is full of magic numbers (even though they are somewhat recognizable magic numbers), and is therefore not as clear.  I don't like it, but if you wanted to use it anyway, I suggest:

function school_started2_alt($years){
    $SECONDS_PER_YEAR = 365.25 * 86400;
    return date('Y', time() - ($years + 0.5) * $SECONDS_PER_YEAR);
}


If you are using PHP ≥ 5.3, also consider this formulation, which flows nicely from left to right:

(new DateTime())-&gt;sub(new DateInterval("P${years}Y6M"))-&gt;format('Y');


The kinds of strings accepted by the DateInterval constructor follow a rigid format, so the parsing should be efficient. Keep in mind that PHP itself is an interpreted language, so the work to parse a DateInterval specifier string is insignificant relative to the total amount of parsing involved. You should therefore take full advantage of PHP's built-in features to simplify your own code.