Controlling terminal is a total different concept from stdin.
Why you have such a question is probably because you consider the controlling terminal as a stdin only, but it is actually more than stdin.

First, Controlling terminal makes your processs a foreground process. You can try, if you remove the controlling terminal from your process, it will become a background process immediately. Then you will be able to interact with shell again. You otherwise need to wait to interact with shell until your process exits.

Second, thanks to controlling terminal, kernel is aware of which process (group) is foreground process (group), which is background process (group). Because kernel is aware of this information, it knows the terminal-generated signals should be delivered to which process (group). (e.g., Ctrl-C, Ctrl-\, and the hang-up signal)

Third, even if you already redirect stdin to other places/files, you still be able to read/write from/to controlling terminal, the `/dev/tty`. This special file is a synonym within the kernel for the controlling terminal of current process. If your process has no controlling terminal associated, then open this file will fail. What can you do regarding this file? E.g., some programs need user to input password before doing something, such as programs for login or encryption. These programs may prohibit user from inputting password from stdin, which means even if you redirect their stdin to a random file, they'll still wait for your type. The reason is they all open /dev/tty to read.

Please refer to APUE 3rd Edition, Chapter 9.6 for more details.