What is the role of the bias?
Bias simply takes care of variables which are unaccounted for i.e you did not include it in X. All Machine Learning and Neural Nets do is approximate a function. All functions can be represented as a series of exponentials using Fourier Transform which basically means a function can be expressed as a sum of many other special functions.

In this series there is a constant term to adjust the elevation of the curve above the x-axis. This constant can be thought of as the bias. Thus it basically takes care of the fact that when all variables are 0, a function need not be 0.