BulkAPI vs Dataloader?
1) If I need to load 10,000,000 (10 million) records into salesforce, Can I use Dataloader and select the 'Use Bulk API' option on settings screen?
The data loader supports any size file that your system can handle and Java can read in memory. In theory, it could support hundreds of millions of records. The bulk API has smaller limits, but the data loader handles this for you transparently.
2) What exactly is the use of 'Enable serial mode for Bulk API' on the settings screen? Documentation is not really helpful on this..
In the default mode, the system splits the file load into pieces and runs them concurrently. This is faster in wall clock time (the physical amount of time needed to complete processing), but can cause row locking errors. Changing to serial mode will greatly increase the physical time needed to process the file, because all records in the file will be processed sequentially, but reduces the odds of row locking errors. Use this mode only if you get many locking errors because of the default parallel processing mode.
3) If I have 2 million records to load and using Data Loader, do I need to enable the Bulk API option? If I enable what is the advantage?
In parallel mode, the processing time can be significantly reduced, because the program is not idle waiting on single batches, and doesn't need to be multi-threaded. In serial mode, the bandwidth for the files can be used up front, and CSV uses less bandwidth than SOAP, so there's some benefit in loading speed, and a network interruption after the initial upload won't affect the processing (compared to SOAP mode, where the upload is spread over time).