There are many questions here. I will take on the color printer one:
In (inkjet) color printing, you define a superpixel on the page which for example could be divided up into 9 subpixels in a 3x3 array. To get almost any color you want for the superpixel, you populate the superpixel with anywhere from one to 9 spots of (for example) magenta, 1 to 9 spots of yellow, etc. subject to the paper's limiting capacity to accept drops of ink without excessive bleeding outside the boundaries of the superpixel.
Since that "laydown limit" for wet ink to bleed on a piece of paper will be significantly different for coated photo paper, uncoated copier paper, and transparency film, the firmware running in the background on the printer itself will invoke different superpixel laydown maxima depending on the paper type the printer is loaded with. Many printers contain optical sensors that "read" the paper, deduce what kind it is, and look up the right print parameters for it automatically.
If you print the magenta first and the yellow second, you will get a different shade of red than you would if you laid the yellow down first. This means that the printer has to shift into unidirectional printing when laying down a color image to prevent hue shifts that are caused by switching the laydown order on adjacent sweeps of the printhead left-to-right and right-to-left.
Ordinarily you define a certain area-filling pattern within the superpixel for placing the colored dots in it so as to maximize the dynamic range of different shades that the superpixel can represent; which would also involve deliberately mapping the magenta dots onto the same locations as the yellow dots, to get the best red tone possible. This fill pattern is called ordered dithering.
If you happen to require a noninteger number of spots within the superpixel to get the exact shade of color you desire, then you "share the error" by putting down one extra color dot and leaving that same color dot out of the next-door superpixel in a process called error diffusion.
High-quality photo printers commonly use two different nozzle arrays for the cyan and magenta primary colors, which shoot two different dilutions of ink into each superpixel- significantly increasing the number of shades that can be rendered in a superpixel. The yellow primary is usually one dilution only, because the human eye's spatial resolution for yellow is low enough that the second yellow level isn't needed, and can be managed instead through error diffusion.
When black is needed in the print, the black print nozzle array is brought into play because the pure black ink produces a harder-hitting black than can be had by printing all the primaries on top of each other (which is called "process black"). Whenever the black printhead is active, a new set of laydown tables are looked up with the overall objectives of minimizing the ink load in the superpixel and correct color rendering.
The program inside the printer that manages all these factors is called the printer's writing system, and writing system design has become a well-defined engineering discipline within the digital printing field.