I am trying to create custom shell as an exercise and wanted to implement wildcard expansion. How exactly do shells like bash perform the expansion? I mean what all steps are involved? 

As I understand, the shell looks for file names in the current directory and replaces the argument which contains the '\*' with the filenames which should match. Is this correct? What other wildcard expansions should a shell do other than a '\*'