Should a table be partitioned before or after an INSERT?
You can't partition an existing non-partitioned table.  So if you want a partitioned table, you would need to create a partitioned table before inserting any data.

Assuming that you are not using interval partitioning (in which case you're telling Oracle how to automatically add new partitions based on the data), you would almost certainly want to create the appropriate partitions in advance.  If you are range partitioning the table, you could, in theory, create a MAXVALUE partition for the table, load all the data, and then split the MAXVALUE partition into the individual partitions that you want.  But that would involve moving all the data around multiple times which would be much less efficient than simply loading the data into the appropriate partition from the outset.  

Inserting the data "in the order of the partitions" probably won't make a difference from a performance perspective.  Oracle still has to determine for each row which partition to insert it into.  Assuming your indexes are local, it may well be more efficient to load a staging table whose structure matches the structure of a partition, create the appropriate indexes on the staging table, and then doing a partition exchange to exchange an empty partition with the staging table.