Нужно ли биндить все методы?
bind нужен если вы зачем-то хотите вызывать метод отдельно от объекта.
Делать его всегда не нужно, вы просто замедляете выполнение кода (bind далеко не бесплатен) и рассыпаете потенциальные грабли (иногда нужно вызывать методы в конексте других объектов).
И даже если надо bind, то лучше его делать в тот момент когда он реально необходим.let method = dog.sound.bind(dog);
method();
Да, все верно. Но можно также использовать arrow functions и тогда не придется биндить:sound = () => {
    console.log(`My name is ${this.name}`);
}