Разница между ложью и враньём существует далеко не во всех языках — эта разница, например, непередаваема в английском языке: «to lie» скорее означает «лгать», и даже этимология у них общая, тогда как подобной связи между «to lie» и «врать» вообще нет.
Значение слова «лгать», в общем-то, понятно всем: говорить неправду, осознанно давать неправдивую информацию. Слово это применяется в уничижительном смысле. Лгун и лжец — однозначно плохие и вредные люди.
Значение слова «врать» несколько иное: это не то что осознанно, целенаправленно говорить неправду, а скорее ошибаться или неточно передавать ту или иную информацию, преуменьшать или преувеличивать. Врун, враль и врунишка — люди не столько плохие и вредные, сколько ведущие себя неправильно.
Если агенты Третьего отделения Собственной Его Императорского Величества канцелярии вторгаются в дом к вашему другу и спрашивают, где вы, политический преступник, революционер, скрываетесь, а он не скажет им правды, то для вас он будет вруном, потому что он не скажет правду, но не поступит плохо или вредно с вашей точки зрения, хотя и неправильно, — а для них он будет лгуном, потому что окажет сопротивление государственной и лично их воле.
Русский язык вообще очень тонок на различия в смыслах тех или иных слов, хотя в современном мире области их применимости всё ближе и ближе притираются друг ко другу, что лично я не считаю чем-то хорошим, хотя понимаю, что это закономерно, однако такие вопросы, как ваш, помогают всем этим различиям ещё держаться на плаву.
Идите вы в словарь.