A reach-in foul in the NBA is when the defensive player "reaches in" and tries to steal the ball away from the offensive player. The foul occurs if a player impedes a ball carrier's personal space while making contact with him reaching for the ball.
Defensive players can have a bad habit of taking reach-in fouls because they like to try and steal the ball and can get caught reaching. Ball carriers can also bait defenders to reach based on certain movements.
Defensive players reach in for the ball against the offensive player because they are trying to impede their progress to the basket and are trying to steal the ball. Instead, the offensive player gets slapped on the wrist and the defensive player gets whistled for a reach-in foul. Defensively, players try to get the ball back as quickly as possible and can get caught reaching in when trying to steal the ball in order to do so.
The offensive player doesn't usually get to shoot free throws on a reach in foul unless the opposing defense is over the limit on fouls given. If the defense is over the limit on fouls, the offense is in the bonus, which means that on each foul on the defense results in free throws for the offense. The majority of the time, however, reach-in fouls are non-shooting fouls. This means that instead of free throws the player who was fouled inbounds the ball to his teammates in the frontcourt. Players would obviously rather the free throws but they cannot get them unless they get the other team to take enough reach in fouls that it puts them in the bonus.