"precision" robots are hard to make, small ones even more so because of the smaller margin of error. What exactly do you mean by "precision"?
Encoders are usually the best way to get motor positions, you can get optical or magnetic ones that have >8000 counts per revolution, though for small robots that don't require that much precision servos are alot easier.
you have two choice with microcontrollers, you can buy a control board like Axon or Arduino, or you can get a PIC/AVR/dsPIC and program them and make your own board. The latter is obviously more difficult but slightly cheaper, though you don't need a programmer for microcontroller boards like Axon or Arduino.