Check this:
$ name=foo
$ echo $name
foo
$ sh -c "echo $name"
foo
$ sh -c 'echo $name'
$
You need ' in stead of " in your command. Else $name will get evaluated to foo before execution
And to answer your question, yes, it does create/spawn a new shell.