That’s not really the intention of this method, or the article you link to.
The idea is that an entire object, or individual surfaces in an object, are drawn in their own unique colour. (The “uniqueness” of the colour is limited by the colour buffer’s resolution. So in theory you could use ranges on surfaces or many slightly different colours for individual faces - up to the limit of the current colour depth’s resolution.) You then read back from the colour buffer after drawing is complete and the unique colour you get back for a specific pixel identifies the object (or surface).
Blending, depth buffering etc. all have an affect on the results you get from the colour buffer, and which object (if any) that you end up “picking”. Blending (for example) would almost definitely break this method as it is described above.
It’s summed up in the final paragraph:
One disadvantage of using the color buffer is that the color buffer can only hold a single identifier at each pixel. If depth buffering is used, then the pixel will hold the object name corresponding to a visible surface. If depth buffering is not used, then a pixel hold the name of the last surface drawn. The OpenGL selection mechanism can return a hit record for all objects that intersect a given region. The application is free to choose one of the intersecting objects using a separate policy, e.g. the object closest to the viewer, iterate through all of the objects one at a time, etc.