1) Yes, that is one way of doing it. I'm sure there are others.
2) Yes. Definitely.
Linq takes longer because it is doing a lot more. It has to create an expression tree, evaluate the expression an iterator, which calls the strings enumerator to move along the string the required number of characters, then do it all again for your second method call, then convert the whole lot to an array, then create a new string and process the array into the new string.
All the substring call has to do is a bit of pointer arithmetic to extract the middle portion of the string and return the new string.
This is a perfect example of an absolutely terrible use for Linq. Linq is for helping the developer with complex queries on enumerable or query-able data, not processing strings. Here the overhead of Linq by far outweighs any benefits in readability. Stick with the substring call.
[Edit: Corrected linq details following comments from Marc]