На данный момент слова можно считать практически точными синонимами. Из значения и их функционирование в речи совпадают. Различны слова происхождением. Слово НАДО из деревне-русского языка, тогда как НУЖНО имеет чередование Ж-ЖД (нужда - нужно), а это признак старо-славянского языка. Изначально эти языки имели разную сферу применения, что наклалывало свои особенности на значения слов. Старославянизмы использовались для обозначения абстрактных понятий, а исконно русские слова - для бытовых явлений. Старо-славянский язык создавался для религиозных нужд, древние-русский был нужен для повседневного бытового общения. Но теперь именно у слов надо-нужно такое различие практически стерлось.
Слово Нужно означает нужность, полезность, то, без чего нельзя обойтись.
Слово Надо эгоистичное, означает потребность сиюминутную, часто бывает Надо просто потому, что хочется, но не по потребности.
Вот сейчас, совсем без юмора, Буквы это просто условные знаки, буквы зачастую не связаны с фонетикой. Вот например эти два слова. Если перейти на язык образов то разница очевидна..наДо это когда в туалете по маленькому, нуЖно это когда, ну вы поняли, не очень аппетитное слово испражнение тужиться. Физиология мать ее.