well the basic principles are for robots (at leeast the ones that move not arms) :
*robot has to have motors; what kind of motors, that depends on the task and need. you can use all motors on robots: DC, Stepper, Servo, Nitro, V8
* robot has to have a brain; you can use a simple microcontroller or a computer on board. f not much processing power is needed then i would suggest uControllers, but if you are going to do some image processing on your bot then a computer of somekind is a must.
* robot has to have sensors; you can use primitive tutch sensors that activate when robot bumos into something or you can use something that sees he is going to bump and turns away before it really happens. for distant ones you need IR sensors/sonar(ultrasonic)/camera sight. IR is the easyest, Sonar is the coolest, camera is the hardest and most expencive, but works if configured right the best.
* robot must have something to debug it with. will it be a connection to computer or LCD this is your own choice. LCD is better cause it's mobile but PC has more power so more things can be looked through faster.
as for programming, there is no common way to go. you can use easy and slow basic or poerful C or Assembler. it also depends on what "brain" your bot has. when there is a PC running on it then it is like programming a PC but when there is something more primitive then it is wery different that you may have been used to. no GUI or anything
.