In your example, yes, you will get the sort for "free". MongoDB can use the single index both to restrict the results returned and also to order those results.
As to the second part of your question: provided MongoDB determines that it needs to use your index to restrict the result set, it will return those results in a sorted order, even if you do not provide an explicit sort. However, you should not rely on the decision to use the index, and should always specify a sort order if it is required by your application. As you have pointed out -- there is no additional cost if you are already using the index.
To see if your query is using an index for sorting or whether it has to perform an in-memory sort of the results, look at the scanAndOrder field from the explain() output. For example, the output below indicates that the query did not have to order the results after accessing the data (i.e. it leveraged the index for sorting):
> db.stuff.find().sort({_id: 1}).explain();
{
"cursor" : "BtreeCursor _id_",
"isMultiKey" : false,
"n" : 51428,
"nscannedObjects" : 51428,
"nscanned" : 51428,
"nscannedObjectsAllPlans" : 51428,
"nscannedAllPlans" : 51428,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 464,
"indexBounds" : {
"_id" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
]
},
"server" : "myserver:27017"
}