Sure his question is unclear, but I have clearly stated that I took his question to be about the difference between taking n items and inserting each one one at a time into a list in order, vs appending all items into an unsorted list and then sorting it.
Inserting in order as you go is O(n*n) because each of the n inserts will at worst require comparing against every item that has already been inserted. It's one of those sums 1 + 2 + 3 + 4 + 5 which comes out to n(n+1)/2 IIRC and so is N-squared, no doubt about it. Yes each insert is O(n), but in order to compare it to the sorting case, you have to consider all the big-Oh notation of all of the n inserts.
As for sorting the array afterwards, nothing can sort in faster than O(n), so the O(n) inserts into the list to begin with will be irrelevant in terms of Big-Oh notation. Therefore the only thing relevant there is the Big-Oh notation of sorting a list. Merge sort does this in O(n*logn), in fact that's both best and worst case. Bucket sort would likely be even better.
As for his last question, there is no correct answer due to lack of information. He hasn't defined what "efficient" means for starters. Memory efficient, time efficient? Some function of the two?