You can know the speed and position of a BLDC motor if you invariably drive it synchronously - either with hall sensors or sensorless control. This is the usual mode of operation.
Motor speed is easily determined by either method.
For position determination, of these Hall sensors are the closest to providing certainty in position. HOWEVER it is easy enough to lose synchronous drive momentarily and it is then not possible with the above methods to know how far "out of step" the motor is.
As DKNguyen says - adding an absolute or per position sensor greatly helps. In the case of a geared motor the sensor would usually be on the output shaft. Depending on what you are trying to achieve a sensor that operates once per evolution may be adequate or if this is not adequate an absolute encoder can be used.
Knowing more about the end application will allow a better answer.