It's less safe. Not all variables will work in it, especially strings, and if anything even slightly resembling awk syntax is in there, awk will throw syntax errors.
After all, you're changing the program code that way, not the value of a variable. And anything can happen when you put the right (or wrong) things into a program.
$ c="1 ; print 'Hello World'"
$ awk 'NR=='$c' { print $2 }' filename
awk: cmd. line:1: fatal: cannot open file `;' for reading (No such file or directory)
$
You might like the old-fashioned way of doing it, it's pretty short and straightforward:
awk 'NR==C { print $2 }' C="$c" filename
You can put any string you want in there, including strings, and even strings with spaces in them, without causing awk syntax errors.