When you open the database, oracle checks the control file and then checks each file listed in the control file to verify that it is current. If the datafile is behind the control file, the database knows that it must recover the datafile. However if the datafile is ahead of the control file, oracle assums there is a problem with the control file (ie you restored the wrong one etc). to recover using an older control file you must specify the "useing backup controlfile" clause. Basically, this tells the database that the control file is behind the datafiles. Oracle can roll forward through the archivelogs but it does not know when it has completely recovered (since the is in the control file and it is behind the database). Once it recovers through all the archivelog that is finds the database stops. You must open the database using the resetlogs clause. This established a point of consisstence (even if it is not consistent) for the database to work from. At this point, you should export, rebuild and import the database to insure data integrity.
This is why it is important to have multiple control files on different disk so that you always have a "current" control file to recover from.