See this post:
Differences in procedural and object-oriented implementations of mysql in php?
For your purposes, there is no difference in procedural vs OO. Under-the-hood, they do the same thing. The thread of execution is the same. There is no "asynchronous vs synchronous" or "serial vs parallel" thing going on.
Codeigniter would only have a performance benefit if you use it instead of another framework. You could choose to use it for other reasons, but they aren't related to your stated problem. Your existing PHP should be fine.
Steps 1 and 2 are separate PHP requests. There is no process on the server which persists throughout the user's website visit. You might have lot of visitors viewing the website at the same time, but it is only their server interactions which matter. Suppose you have 2 lakh visitors on the website at peak times, and each visit lasts 15 minutes. That translates into about 200 Step1 requests and 200 Step2 requests per second.
For PHP scripts doing a small number of DB requests and generating a bit of HTML, you might have from 5 to 50 process running simultaneously on the server. That is not a huge load.
Your bottleneck is likely to be in Step1, where you will be emailing 200 passwords per second. You need to use a method that gets the email out of PHP quickly and into the queue for your outgoing mail server. If each mail request were to block your PHP request for 5 seconds, you would need 1000 simultaneous PHP processes. Do some testing, sending out 1000 emails from one PHP script, and see if it takes more than 5 seconds.
If you really need large-scale processing for a 1-day launch, consider cloud hosting where you can use as many servers as you need for a short period of time, at low cost. For example, see:
http://www.rackspace.com/cloud/cloud_bursting