Как правильно менять тип переменной?
Да, так делают, и довольно часто. Конструкция !! для приведения к boolean вообще чуть ли не стандарт. В jQuery встречается, например.
Вторая чуток пореже, и как правило, сперва ставят пустые кавычки, а потом уже переменную. Так: var num = 12345;
var x = ("" + x)[3];
console.log(typeof x, x); // string 4
Третья еще реже, обычно просто ставится плюс перед переменной: var y = +x * 10;
console.log(typeof x, typeof y, y); // string number 40
Использовать такие трюки вас никто не заставляет, но помнить о такой возможности нужно, хотя-бы для того, чтобы понимать чужой код.
И да, это делают не для оптимизации, а потому что Краткость - сестра
В разных браузерах по-разному. Но обычно быстрее. Попробуйте сами: var date_start = new Date(),
    b;
for (i = 0; i < 200000; i++) {
  b = !!i;
}
console.log((new Date()) - date_start);
vsvar date_start = new Date(),
    b;
for (i = 0; i < 200000; i++) {
  b = Boolean(i);
}
console.log((new Date()) - date_start);
Но лично я за принцип "Явное лучше неявного".