Hi Mariano
Having built many servers running PHP now, the difference is purely speed and security, as a CGI the PHP core can make your server vulnerable to attack (at least that's what we found) and the server also has to spawn a separate process for each document called per virtual server.
As a module, Apache has the PHP core code built in (or loads it dynamically dependant on how you compile it), this makes your scripts execute a lot faster.
The way that I have found (in my opinion) to distinguish is by the inclusion or ommision of the "--with-apache=...." command during the configure process, if you leave it out, you get PHP built as a CGI, if you put it in and then recompile Apache afterwards, it becomes part of the core.
If you have the chance, compile it twice, first as an apache module and then as a CGI, this sounds like a waste of time - BUT, make Apache use it as a module and keep the CGI binary tucked out of the way on the server. If you write a site that requires some off-line processing (eg via cron), instead of writing a PHP version for the web end and a PERL version (and have to compile MySQL modules and such like into the Perl core) for the back end processing.
You can have one code library which can be called either side of the interface.
For example, you have a large code library that handles data structures in a table.
All you have to do is use the include() function in your code for both scripts and use the same function twice rather than re-writing it - saved us a lot of time for one of our web-based management systems.
Hope this helps.