Sorting the second variant will require string copies using an intermediate buffer or byte-for-byte / block-based swapping. It's likely that this will be "slower" than simply moving pointers.
Conversely, using pointers to actual string literals means only swapping pointers as you sort. So it's likely that this will be "faster".
Furthermore, it's likely that your string literals will be packed closer together in memory by the compiler, which can help cache performance, assuming you actually want to sort a much larger number of strings than 3.
For the example you give, however. It's not completely clear-cut. On a system with larger native types (e.g. pointers, or special SIMD enhancements) it's entirely possible that swapping around strings in the 2D array can be optimized to the point where you can barely measure a difference. Although this is highly dependent on the underlying memory architecture, and whether it cares much about alignment.
A final point is that if you have a very large 2D array, it would need to be allocated either statically or on the heap, as it may not fit on the stack.
And of course, you may only begin to see measurable differences at very large array sizes. Using an example with 3 strings is pretty ridiculous.
name1would likely be faster as you can swap the pointers. Thename2line would require you to move the entire string, not just the pointers to strings.