1) It doesn't have so much meaning itself. It just determines whether the user requested to sort in a particular way and, if you allow the user to sort in that particular way, then the variable takes the sorting value. Otherwise, it becomes null. Then, based on that value, the sorting is assigned when generating the query. This actually happens here.
2) Yes. There is an index on the created field but there is no index in any of the other fields (flagcount, netvotes, views, hotness). So when the database tries to sort the values it has to sort the actual values rather than the values in the index so it takes more time. Note the ORDER BY there is just the only difference between the indexed and unindexed queries
3) Somewhere else too. But only when you are in a questions/XYZ URL and when you request the HOT page or the HOT feeds, because it has to sort a calculated field so it can never be indexed.