Bus bunching is an instability problem where buses operating on high frequency public transport lines arrive at stops in bunches. In this work, we unveil that bus-following models can be used to design bus-to-bus cooperative control strategies and mitigate bunching. The use of bus-following models avoids the explicit modelling of bus-stops, which would render the resulting problem discrete, with events occurring at arbitrary time intervals. In a "follow-the-leader" two-bus system, bus-to-bus communication allows the driver of the following bus to observe (from a remote distance) the position and speed of a lead bus operating in the same transport line. The information transmitted from the lead bus is then used to control the speed of the follower to eliminate bunching. In this context, we first propose practical linear and nonlinear control laws to regulate space headways and speeds, which would lead to bunching cure. Then a combined state estimation and remote control scheme, which is based on the Linear-Quadratic Gaussian theory, is developed to capture the effect of bus stops, traffic disturbances, and randomness in passenger arrivals. To investigate the behaviour and performance of the developed approaches the 9-km 1-California line in San Francisco with about 50 arbitrary spaced bus stops is used. Simulations with real passenger data obtained from the San Francisco Municipal Transportation Agency are carried out. Results show bunching avoidance and significant improvements in terms of schedule reliability of bus services and delays. The proposed control is robust, scalable in terms of public transport network size, and thus easy to implement in real-world settings.