Interestingly, when the shell expands * , it won't do anything to make sure files starting with - are handled properly.
This means, if you're in a directory with the files a, b, -rf, and the directories foo/ and bar/, running "rm * " will not delete all the files and keep all the directories; instead it will be turned into "rm a b bar foo -rf", meaning it will delete all the files and directories except for the file -rf.
The problem is names that could be interpreted like options, like '-f' or '--help'.