I liked the practical nature of the other answers, here's a more precise explanation I
posted under a dupe thread.
Yeah, these are not so easy as there is a complex set of circumstances where you can use one over the other. I'll try to cover the most common usages and differences.
~ば is used in the case of a consistent relationship of cause and effect.
合格すれば、卒業が出来ます (goukaku sureba, sotsu gyou ga dekimasu)
If I pass I can graduate.
雨が降れば、試合が中止になります (ame ga fureba, shiai ga chuushi ni narimasu)
If it rains the match will be cancelled.
It can also be used for hypothetical statements, such as 明日もし雨が降れば、テレビを見ましょうか？ (moshi ame ga fureba, tereba wo mimashouka?) If it rains tomorrow, shall we watch tv?
It should generally not be followed by an expression of a wish, desire or command, and never by an action that has completed.
On the other hand, ~たら is usually used to indicate a particular condition being satisfied and it CAN be followed by an expression indicating a wish, desire or command, or followed by an action that has completed.
パチスロに着いたら電話ちょうだい (pachisuro ni tsuitara denwa choudai) Please give me a call when you get to Pacinko!
Or used with a completed action: 焼酎の瓶を飲んだら、歩けなくなった (shouchuu no bin wo nondara, arukenaku natta) I was unable to walk after drinking the bottle of shochu.
Or like ~ば it can be followed by a hypothetical statement: 明日もし雨が降ったら、テレビを見ましょうか？ (moshi ame ga futtara, tereba wo mimashouka?) If it rains tomorrow, shall we watch tv?
Just to boggle us further, there is ~と (more similar to ~ば) and ~なら which is a long conversation all by itself.