надо means I must, I should, I need to - with a moral like obligation implied:
"I need to call my mom." (guilt guilt guilt)
"I should give to charity." (guilt guilt guilt)
(должен is a ought to/should/must also with a hint of moral obligation but is used with nominative nouns - unlike надо and нужно which are used with dative nouns)
нухно is a more straight forward need without moral obligation implied:
"I need a pencil for this task."
"I should buy a cell phone for this job."
As a native speaker I can say that there`s no real difference in надо and нужно. Although you won`t find надо much in written Russian, because it`s a very colloquial form of "I need" and not used even in polite conversations. The usage of these words is also a little different. Usually we don`t put nouns after "надо" as in the examples above: "мне надо такси". It sounds much more correct if you use it with the verbs: "Мне надо идти"-I have to go. "Нужно" is also used exclusively with verbs, but you can use it with nouns IF you modify this word according to genders:
Мне нужен телефон - I need a phone
Мне нужна ручка - I need a pen
Мне нужны деньги - I need money
You probably came across "надо" a lot more often on RussianPod. But that`s just for the total beginner lessons, because "надо" is not modified according to genders and is easier to pronounce. Although... personally I wouldn`t recommend using too much, it`s rather slangy. Like "I gotta go" maybe, though it`s hard for me to catch the feeling of the English "gotta" "havta"
Должен - is a totally different story. It just mean "must, have to" and implies obligation.
And again, "надо" and "нужно" have the same meaning - "need, should", and only differ in usage and level of speech.