Union [ StringJoin /@ Permutations [ Characters [ "hello" ]]] StringJoin /@ Permutations [ Characters [ "hello" ]]
Have you searched the doc?
You can use DuplicateFreeQ to test if a List has duplicates.
DuplicateFreeQ
List
If you know in advance that your list has no duplicates then Union is not needed (and Sort can be used if you want it sorted). But in general one might not know a list will contain no duplicates.
One is applying Union, the other is not. What is this question about? Is one or the other giving an unexpected result?
Union