No, the motor is behaving perfectly normally. If you want to measure back EMF in this manner, you can only do it during those periods in which no excitation is being applied to the motor.
Given this restriction, you can actually measure the back EMF on any of the windings.
I think you misunderstand what "controlling by voltage or current" means.
The motor, as a matter of fact, is always controlled by voltage, a bit like a car is controlled by fuel injection. In the case of a BLDC, we usually talk of a modulated voltage generated by a voltage source (let's say 24V).
And although it is true that voltage is associated to speed, voltage induces current, and current relates to torque. What you usually need to control at your lowest level is current (or almost directly torque).
Controlling current "directly" may mean to switch the voltage measuring current and comparing it to a setpoint. Have a look at keywords such as DTC (direct torque control). This method is harder to master, and more complex to understand and implement, but it usually results in better performance.
A simpler, more intuitive way of controlling the motor is by making use of a standard PI controller, employing the Direct-quadrature transformations to transform 3-phases (I assume) currents into quasi-linear currents Iq and Id, where controlling Iq has a direct influence on torque, while Id should be kept at 0 as it's associated to energy losses.
Back-emf should be compensated for a good torque control.
Frequency goes up with velocity... Careful, because with it, also disturbances get more nasty.
Best Answer
Yes !!!!
For one thing, the motor will speed up after the initial readings and your timing will be off. But even if you capture the zero-cross timing when the motor has reached constant rotational speed, there are still lots of reasons you need to dynamically monitor the timing. A tiny error in your initial reading (and you will always have error) will compound over time if you're running open-loop. Also, electrical and mechanical variations (mechanical vibrations, voltage/current inconsistencies, minute changes in the air resistance around the spinning motor, etc) will cause minuscule differences from rotation to rotation. All of these things will affect the timing. And those are assuming your load isn't changing. Obviously a changing load will have a huge impact on timing.
That said, it usually is possible to spin a BLDC at slow speeds in an open-loop system. But once you exceed a certain speed, it's no longer viable.