Both are correct queries..
As far as the first query is concerned , first max(sal) will be computed and accordingly the corresponding employee names..
Second query also does the same thing..As there is one tuple resulting from inner query as we are finding max salary, so ALL will give same result provided we use >= or = signs..
In fact , this query will also work :
Select name from emp where sal >= all(Select sal from emp);
Hence 3) is the correct answer..