I think you are getting more confused. You don't "open" a heredoc.
$$i will contain the string "
abc\n", so
open will attempt to open a file with that name. A newline may or may not be a valid character for a file name, so you may or may not be able to even create a file with such a name to read from. Once you put quotes around a variable, it stringifies it, so the value returned from the quote operator is no longer a reference, it's a string, which is why
$i didn't work as you expected either.