thermal printers are available with or without controllers.
without controllers are to be programmed based on the interface data provided by manufacturers. but very hard to get the info because it is manufacturer centric.
with controllers are avialble more than without models.
the interface is usually serial(and usb/parallel).(though many other interface standards are given by manufacuresr for their printers)
if you have selected a serial or parallel interface type , you can concentrate on your application.
the control codes tobe sent to the printer , for most, esc/p standard for text.(exceptions also). for graphics it is manufacturer specific.
whatever printer available in your area , you "must" have the programmers manual of control codes.
you can use any language you are comfortable with , for programming.