Here is the options for printing from the Android Device.
Thermal Printers - In market no of thermal printer are available like EPSON, Casio, STAR or Chinese printers. These printers have their own SDK. By simply import that sdk in project you can print from the application.
Connectivity is the main thing in using those printers. Every user have different kind of needs. So we can connect with thermal printers via USB, Bluetooth, WiFi, COM Port 232, Ethernet.
Also one more thing is you can install your printer drivers and CUPS on Server and directly send the printing request to the server and server send it to printer IP. This feature allow you to print form anywhere no issue of slow connection like we face in BT and WiFi.
Google Cloud Printers - In this case you have to registered your printer on Google printers and through Google Cloud printer API's we can print from the Android Device.
My personal opinion is to go for the Thermal printer as i have used the EPSON, Casio and some other and they are fairly easy to use and satisfy all our needs.
For the Developers here is one sample how to deal with thermal printer
How to print from the Thermal Printer in Android?