Actually, there's more than one way for apache to invoke a PHP script.
Since you're mentioning DLLs and exes, I'll assume you're running windows. I run Linux, so it may not be the same in windows, but I'll tell you how php works under unix/apache
Basically, the php interpreter is run as a loadable module for apache. What this means is that the interpretor for php pages is pre-loaded into memory, and when apache loads a file with an extension listed as a php containing page, it hands interpretation of that page over to the php module within itself. The PHP module / Zend interpreter then compiles and executes the php code it finds inside the page, replacing that code with the output generated by the code.
The page is then passed back to the main() apache process which does whatever else apache is configured to do to it, then passes it back out to the requesting client. I'm pretty sure that under windows it's pretty much the same as unix if you're running php as a module.
The other way to do it is to use the php.exe or just /usr/local/apache/cgi-bin/php in unix to execute php pages. This requires that apache fork and create a new process for each page view, then destroy that process when done.
This method is much less efficient, and should be avoided if possible.