I was just using drillegend-stack.ulp to generate the drill info table for our manufacturer. At the end, this ulp throws three different layers (144, 145, 146) and I usually just make them all "144 DrillLegend". The question is, is there a reson for Eagle (or this ulp) making holes as if they'd go throught "01-20" and vias "01-16"? It's just a 4-layers PCB and I am not using any burried or blind vias, so everything should be throughout entire board...
During production, the holes for pads and vias are drilled first, then the PCB is put into a chemical solution which plates the holes with metal, i.e. makes electrical connections between both sides.
EAGLE stores those holes in layer 44, "Drills".
Pure holes without metal plating are drilled later in a second step. They are stored in layer 45, "Holes".
In addition, there is the layer 46 "Milling" for creating holes of any shape.
It is obvious now why your UPL chooses numbers 144, 145 and 146.
Finally, layers 1...16 are reserved for copper layers in EAGLE, 1 and 16 always being the layers for top and bottom copper. If you design a 2-layer board, it simply does not have layers 2...15.
So, a normal via connects layers 1...16, and blind / buried vias would connect only a subset of them.
However, layer 20 is the "Dimension" layer, which stores the outline of the PCB, including any cut-out. While a via is not seen as belonging to the outline, a hole or milling is.
Here is an example boad with a via and a hole. Layer "Drills" is red, showing the positions of the hole for the via. Layer "Holes" is green and shows the position of that hole, and layer "Dimension" shows the outline of the boad, including the hole, but without the via.