MySQL Index Creation Internals
There are a few things I can clarify for you here:


Yes, it is a good practice to delay secondary index creation until after you import the data (starting from MySQL 5.5 - not before).  Mysqlpump does this by default.
When you delay secondary index creation, internally MySQL will read, sort and then create the index (reducing fragmentation).  For MySQL 5.7 there are additional optimizations here.
When you trickle load indexes, they may have more page splits and a lower page fill efficiency (fragmentation).  This depends a little on the data, and if it is in order.  You are not giving me many clues with column1, column2, but say for example column1 was a timestamp it would probably be in order.
Pages in an index are logically in order, not necessarily physically.  This distinction may matter if you can not fit your working set for ranges in memory and are using spinning disks for backing storage.  It's also a little hard to answer because with spinning disks you are probably using RAID with some stripe size, and the blocks at the filesystem level may also be non-contiguous.
Be aware also that the optimizer may not consider the range scan for large ranges over a tablescan (since prior to 5.7 the cost model assumed pages were not in memory).  If you can rely on this being the case, you may want to FORCE INDEX and compare actual run times.  (More info on new cost model.)