OK so how the hell does it process it if it doesnt yet EXIST (see this type stuff makes me NUTS!)
First you can tell if it is set yet with isset($myvar). Second if it is not set it treats it like null. And what do you mean "if it doesnt yet EXIST"? You created a name and you haven't assigned value to it yet. What would you expect it to be besides null?
$myString = "hello";
$myString++

whats the result of that mess?
You really don't want to know. And I doubt many PHP programmers know either. But it is internally consistent. Try this to see what it's doing:
$s = 'yyy';
$s++;
echo "$s<br/>";
$s++;
echo "$s<br/>";
Honestly, this stuff is just language trivium. If small changes like the many listed in this thread actually bother you then stick with what you are confortable with.