Does altering a table and adding multiple columns rebuild the table multiple times I am using MySql 5.6, and have a requirement to add multiple columns to an existing huge table (more than a million rows).

I could use: 
Alter table T add column C1 varchar(255);
 Alter table T add column C2 varchar(255);
 Alter table T add column C3 varchar(255);
 Alter table T modify column C varchar(255); -- making it nullable

Or

Alter table T
   add column C1 varchar(255),
   add column C2 varchar(255),
   add column C3 varchar(255),
   modify column C varchar(255); -- making it nullable

As per this page in the MySql docs, these operations will require a table rebuild.

Questions: 


Will there be any difference between the above two approaches, in terms of how expensive the operation will be? 
What are the best practices when performing such operations? 
What does a table rebuild, really mean?
Is there a way to avoid a table rebuild, or make the operation faster: (ALGORITHM=INPLACE) ?
Will there be any difference between the above two approaches, in terms of how expensive the operation will be?


No in practice. Because in the second approach the operations execution is one-by-one, not parallel. Cause of this is simple - in theory the next step can be dependent by previous one and so impossible until next step fully performed.


  What are the best practices when performing such operations?


Create new table + copy data + (lock source table + copy data changes in source made by another clients while first copy) + drop old + rename new + restore access rights, FKs and triggers. 


  What does a table rebuild, really mean?


In practice this procedure is performed as described in answer 2 + exclusive lock on the table modified.


  Is there a way to avoid a table rebuild, or make the operation faster: (ALGORITHM=INPLACE) ?


Add separate table with new columns linked to original table as 1:1 instead.