I feel that it's better to instantiate your classes using the parenthesis, even if the constructor doesn't need any arguments. While your examples do the same thing, they wouldn't if the constructor changed. It's a matter of taste and style though.
Here's your first example:
<?php
class foo
{
public function __construct()
}
$foo1 = new foo;
That works, but what if we did this?
public function __construct($db = null) {}
.. well, then it will still work, because the arguments have default values.
But what if we did this?
public function __construct($db) {}
.. it would break due to a missing argument, and you need parenthesis in order to pass arguments. If you ever went back and made the foo constructor more interesting, you'd then just have to add the parenthesis along with all of the arguments.
Finally, languages do evolve. I don't ever see PHP complaining when you use parenthesis, but it could one day become grumpy if you don't. Some do use the no-parenthesis way to say this class we're instantiating has no constructor. It's .. personal taste. You could use the absence meaningfully:
$f = new foo; // class has no constructor, or constructor has no arguments
$f = new foo(); // class has a constructor with default arguments we can set later
$f = new foo($bar) // class has a constructor, and it needs arguments
The above can save time if done consistently throughout a large code base. I'm not sure so much any longer, as folks get better at testing - but that's only my opinion.
Currently, however - no, there's no difference between the two given your examples.