What's the difference between verhindern, hindern, behindern - in dictionary they seem to have the same or very similar meaning?
Etwas verhindern is impersonal and quite strong. Wenn ich etwas verhindere, then it won't happen.
Jemanden daran hindern, etwas zu tun means something like prevent somebody from doing something. So you know who does it, and you don’t want him to do it. It’s as strong as verhindern, but if I prevent Hans from doing something, Max could do it instead. This won’t happen with verhindern.
behindern doesn’t mean prevent something, it only says that it’s difficult for somebody to do something because of something else, which behindert him.
Note that limitations to the absoluteness of verhindern or hindern are often dropped and become appearant only from context. E.g., a newspaper might write:
Depending on the context, this may apply only to the past (if the protestors do not sit on the street again tomorrow, the street will be built) or be a final outcome (protesters convinced the government not to build the road).