Maybe it will make sense if you rearrange the redirections a bit:
<<< Hey > text.txt cat text.txt
Hey is sent to stdin of cat, as a herestring. text.txt is opened for writing, and truncated. So if any text were in it, it would be gone.
cat is executed with the argument text.txt. Since a file was provided as an argument, it ignores stdin, so the Hey is unused. text.txt was truncated, so when cat runs through text.txt the argument, there's nothing to output, so text.txt, which is the stdout of cat via redirection, continues to remain empty.