> для программирования никакие vcs не нужныДа, и текстовый редактор не нужен, можно ведь делать cat >src.c ENTER, вводить код, и тыкать в Ctrl-D по окончании ввода. И компилятор не нужен, можно ведь ассемблировать вручную. Да и вообще компьютер не нужен, программировать можно в уме.
> Они становятся нужны, когда результат этого программирования выносится с твоего локалхоста.
Не. Не знаю как mercurial, а git нужен даже для проекта который ты пилишь самостоятельно для себя в одно лицо. git даёт свободу внесения изменений. Ты можешь взять и поменять что-то для теста. Ты можешь начать вносить отладочный вывод, оверпроверки, и кучу другого отладочного кода, если что-то работает непонятным образом, только для того чтобы разобраться что происходит. Когда понимание придёт, всё что надо будет сделать git checkout --hard. То есть, всё это можно и без git'а: чисто теоретически можно делать это создавая копии директорий или как-нибудь ещё, но git делает эти вещи простыми.
Если же на более сложном уровне, то git позволяет создать внятную историю изменений, и когда ты отвлёкся от своего проекта на полгода, потом вернулся к нему, ты приходишь не к куче непонятного неработающего кода, с которым надо несколько часов сидеть только чтобы разобраться что тут не работает, а что не реализовано, нет. Ты смотришь в историю, в локальные ветки, в последние коммиты, и через десять минут ты в теме, ты уже вспомнил на чём именно остановился полгода назад. Правда, чтобы это работало, неплохо было бы уже не просто эпизодически делать git commit, но тащить несколько веток, раскладывать коммиты по ним, переупорядочивая их, разбивая иногда на более мелкие или наоборот объединяя в более крупные. Впрочем, даже без этого -- беспорядочный поток коммитов вместо истории тоже очень полезен для понимания происходящего.