Tom,
You're being pedantic here in terms of the question. The question isn't which of these are single characters, which which wildcards match.
[] is a set of wildcard characters. This can be used to match a single character. You do need to provide a character to match, but this does work.
; with mycte (mychar)
as
(select mychar = 'Steve'
union
select mychar = 'Bill'
union
select mychar = 'Stephanie'
union
select mychar = 'Adam'
)
select mychar
from mycte
where mychar like '%'
"&" isn't a wildcard, therefore it doesn't count.
% doesn't match single characters, it matches multiple characters. There could be a reasonable argument here that if the data contains a single character, this matches, but in general, this isn't designed to, nor is code written with this to, match a single character. I'll reword the question to remove this.
You are treating these as literals, not as the wildcard characters.