Если скажем у нас будет 100 объектов User, то у каждого будет метод sayHello и это заполняет память.
Если мы записываем в прототип, то метод будет 1 и каждый из объектов User будет по цепочке прототипов ссылаться на него. То есть по сути да, вы правильно поняли.
А запись с классом это "синтаксический сахар" - то есть такой же функционал, просто записанный чуть проще.
Про классы хорошо написа на
learn.javascript