As you pointed out, different methods check for different things and you need to choose the most suitable one depending on your needs. The differences in performance between them are minuscule and certainly not worth micro-optimizing against.
if (a)
Ensures a truthy value. This might not be what you wanted if a return value of 0
or ''
is actually valid.
if (a !== null)
Ensures a null returned value is filtered.
if (a !== null && a !== undefined)
Ensures a null or undefined value is filtered.
if (a != null)
Same as the previous one, filters out null and undefined values. It is shorter, but certain coding styles enforce strict equality checks and a careless maintainer could inadvertendly change the logic by "fixing" it.
var a = test() || default;
Not exactly a check, but very useful because it doesn't branch your logic. When a certain default value can be applied if the result of the test() call is falsy, you might want to use this to avoid the if alltogether and have a clear code path.