All of thermal barcode printers can produce a 2D barcode and all of them also have fixed resolutions. The fixed resolution is desirable because this is what allows them to produce perfect barcodes at speed. The higher resolution printers also cost more; a 600dpi printer is generally twice the price of a 200dpi. The difference the resolution makes is that the smallest barcode one of these printers can make has a narrow element of a single pixel and a 300dpi printers pixels are 33% smaller than a 200dpi printer. Therefore if you were making a barcode (2D or 1D, doesn’t matter) on a 300dpi printer the smallest size it could make is a 3mil barcode, in order to read a barcode this small you would need a special purpose high density scanner, the smallest size a standard 2D scanner will read is 10mil. A 3mil datamatrix 2D barcode with 10 characters would measure be a .048 inch square. The smallest barcode you could make on a 200dpi printer would measure 5mil, if this barcode had 10 characters it would be a .08 inch square, still too small to be read with a standard imager. When barcodes are made larger their size is determined by a factor of how many pixels make the narrow bar, so the smallest barcode has a narrow bar made with 1 pixel, the next largest barcode is made with 2 pixels, then 3 and so on, this means on a 200dpi printer your choices for barcode size would start at 5mil, the next size larger would be 10mil, then 15mil, then 20mil, etc. on a 300dpi printer your size choices would be 3mil, 7mil, 10mil, 13mil, 17mil, 20mil, etc. So if the intent is to make a small barcode both resolutions can produce a 10mil barcode, which would be a .16 inch square, but with a 300dpi printer you have more flexibility in size choices.
The mil size of a barcode refers to the measurement of the narrowest element, which is the width of the smallest bar in a 1D barcode and the width of one of the square elements in a 2D barcode. 1mil = 1/1000 in.