First query is
SELECT
convert(char(12), LetterDate, 103) AS LetterDate
FROM dates order by LetterDate desc
In the above query your are converting LatterDate to char and setting alias as LetterDate. Now your LatterDate became char column and that is why when you are doing order by, it is not giving you result order by LatterDate(expected date wise), instead it is giving result order by LatterDate(as it now became char).
I hope I answered your query.