The optimum is the number that your application needs.
Depending on what web server / application you're using, you will need some number of connections. Your web server will typically have a maximum number of concurrent requests (e.g. MaxClients in Apache) - in an extreme case, this is how many database connections you will need.
Other processes may connect to the database of course (cron jobs, backup etc)
Then there's the small matter of memory tuning - if you're on a 32-bit box, it's important that mysql doesn't run out of address space.
Almost everyone sets Apache's MaxClients too high. You'll probably find you've set it to something like 100, but if you're on prefork, there is no way that your box (which I assume has less than 10 gigs of ram) is likely to be able to usefully run with 100 PHP processes running - it will just run out of memory (before you get anywhere near mysql).
It is vital that you don't run out of memory, that WILL kill your box. MySQL's default tunings (e.g. those provided by mysql in their default small, medium, large configs etc) are quite conservative and won't use a lot of memory.
You should really try (on your test box, in your lab) loading the box with as many (PHP) requests as it can take, to see if it falls over. Something like ApacheBench may be able to do this (Note: you will need at least one production-spec box and one other box in your lab to do this).
Mark