Restructuring table - start with PK or not?
The fastest mode in your case is to use 

INSERT INTO..WITH(TABLOCK)
SELECT..
ORDER BY PK_KEYS


With the new table having the same PK defined on it.

This way you don't sort data even if insert in clustered table, and it will be minimally logged in simple and bulk logged recovery models.

Note this will work only if your PK is not identity where you try to preserve the old values by using set identity_insert on, when the rows will be sorted anyway.

In any case you can create your new table and ask server for estimated query plan when trying to insert in it. If you see there is no sort this will be the fastest way.

When your PK is on identity you'll get the sort in the plan and you may use select..cast(), cast(),...into without creating your new table and you still will have minimal logging, but then you create your clustered PK and have sort. Note in this case or you want to use sort_in_tempdb option otherwise your db may increase it size and if autogrouth is not set properly you'll be wait for it autogrow.