Efficient method of inserting a column into a table based on another table
No, you cannot alter the table structure and insert the data into new column in one statement.

But you can combine last 2 updates:

UPDATE main 
SET main.color = CASE WHEN main.state IS NULL
                      THEN 'Red'
                      ELSE ColorTable.color 
                      END
FROM main 
LEFT JOIN ColorTable ON main.state = ColorTable.state