WITH TIES means that it will keep listing items so long as they have the same values. So if you did something like;
SELECT TOP 2 WITH TIES id FROM table ORDER BY id
you could get..
1
2
2
Since there are ties for the last position, it will list all of the rows that are tied for that spot.
So..
SELECT TOP 1 WITH TIES Salary FROM Employee ORDER BY Salary DESC
would give you something like..
154000
154000
154000
etc.. for as many TIES as there are for the last spot (since youre only doing TOP 1, the last spot is the same as the first). With ORDER BY Salary DESC it will give you the highest salaries.
Is this more efficient then your sub-query? It all comes down to with what MAX() does behind the scenes. According to the BOL (assuming Im reading this right) MAX() will traverse all of the rows regardless if the column has an index or not;
"Aggregate functions (such as SUM, AVG, COUNT, COUNT(*), MAX, and MIN) generate summary values in query result sets. An aggregate function (with the exception of COUNT(*)) processes all the selected values in a single column to produce a single result value."
If this is indeed true, then my query would be many times faster if your Salary column has an index on it. If you plan on having millions of rows, MAX() may become a bottleneck that you might have to fix.
Take all this with a grain of salt. The only real way to find out which query is more efficient is to put it through the query analyzer (assuming you have access to one, which I dont) or to simply fill a table with a million records and start doing some benchmark tests.