It is NOT true to say that, just because the dot product of two vectors a and b is zero, it follows that a and b are perpendicular. The correct inference is that EITHER a and b are perpendicular OR at least one of the vectors a or b is the zero vector.
Formally, once you have shown that a . b = 0, you can infer that a and b are perpendicular provided neither |a| nor |b| is zero.
So, a . b = 0 implies a and b are perpendicular so long as a and b are both non-zero vectors.