A bind shell is created by running a malicious program or code on the target machine ( which makes the target listener ) and the attackers tires to connect to it. If connection is successful we get a shell back and the attacker has control over target machine . In bind shell the target machine is the listener
So a reverse shell where the attacker is the listener( listens on a specific port for connection ) and the target machine tries to connect to the listener. If connection is successful , the attacker gets a shell back. Now the attacker has control over target machine. In reverse shell the attacker is the listener.