Hi rubino,
My thoughts...
1) I guess so, but an open connection is consuming resources on the server, but stress on the database is only happening when you run a query. So if you leave the connection open for the length of the script there is no real problem (to my knowledge)
2, 3 & 4) You don't want to do any of that in PHP (I wouldn't anyways). From the web you control the users creating their agents and the new cars being entered, that seems ok. But then you need a JOB (MySQL does not have them but they are easy to "create", I'll explain later on) that runs scheduled overnight on the database, creates the emails and sends them.
How to do this depends on a variety of factors, most importantly if you are using UNIX/LINUX or WINDOWS. Both systems have schedulers that allow execution of tasks at certain times. You create a scheduled task (cron job in UNIX) and make it run a batch file (shell script in UNIX) that calls your Stored Procedure and sends the emails...
Hope all that makes sense.