А есть ли смысл указывать для дочернего объекта конструктор прототипа, я так понимаю это только ссылка на функцию, и если его необязательно использовать?
У каждого конструктора есть прототип. По умолчанию это Object.prototype.
Если Вам нужен прототип, указывайте. Если не нужен, но и не за чем. Очевидно же.
Только одна поправка: прототип это объект, который (как и прочие объекты) состоит из полей, среди которых есть функции.
Как лучше всего добавлять в прототип свои свойства
Я не знаю. ИМХО, для прикладных задач лучше делать так, чтоб читало проще.
Как лучше добавлять свои методы, вариант только так, или есть более элегантное решение, например создать объект со своими методами и склеить его с прототипом?
Без разницы, но нужно учитывать один момент.
Пусть мы определили конструктор Son и ему задали Son.prototype тем или иным образом. Для простоты положим, что прототип состоит только из функций. Затем создали несколько экземпляров (new Son).
Далее, предположим, мы хотим добавить в прототип новый метод или изменить существующий.
Здесь необходимо решить, будем ли (1) мы менять прототип уже созданных экземпляров или же (2) у созданных экземпляров оставим их старый прототип, а у создаваемых будет уже новый.
P.S. наконец, в последних редакциях появились новые синтаксические конструкции. О них тоже забывать не нужно.