First, this question is highly related to shared libraries in Linux (and not only) and you don't know how it works. It is essential knowledge if you want to work in a business environment as this website suggests so I highly advise you to proceed on knowing your job.
Because you use mod_php, this means that the PHP code is interpreted inside the Apache processes. Shared libraries typically get loaded when a process starts, so unless you restart it, it will, of course continue to use the old libraries (imagine what a mess would be if it wouldn't, regarding all those function pointers it knows from the previous library!).
From the information you provided, I am assuming you are running Apache with the prefork MPM. It means that Apache spawns processes "every now and then", according to an algorithm it has and some parameters you give it in a configuration file. Now, forked processes inherit the memory of the processes that are spawning them (actually it's copied, using CoW). This includes all the shared libraries that were loaded. My guess is that PHP is being initialized lazy, when each forked process needs it for the first time, or something like this. When your request ended up on a process that was spawned before the CURL update, you were getting an error. When your request ended up on a process that was spawned after the CURL update, you were not getting the error, since the PHP engine in that process loaded the new CURL library.
A good practice, when updating libraries, is to make sure that you restart all services that are using it, to avoid exactly this kind of trouble and not only.