Individual simple commands (see below) may be redirected:
$ echo hello | { read message && printf 'We got "%s"\n' "$message"; echo bye >&2; } | rev
bye
"olleh" tog eW
The redirection, on the other hand, binds quite tightly to the current command as the grammar makes the redirection part of a "simple command" construct. A simple command is some command prefix, the name of a command, and a command suffix (where prefix and suffix are optional). A command prefix may be an assignment to an environment variable (VAR=value myscript), or a redirection (>outfile cat). Likewise a command suffix may be a redirection (cat >outfile), etc.
A "compound command" can also be redirected, obviously. A compound command is a command in { ...; }, or an if, while, for, until, case statement, or a ( ... ) subshell.