Allegro 5 is hardware accelerated and as such, ALL drawing operations use some form of blending, even when just drawing opaque pixels. It's just the nature of the beast and all hardware accelerated graphical things work this way.

Allegro 5's got numerous drawing functions that pretty much boil down to how much information you want to pass yourself and how much you just want to assume is default. al_draw_bitmap() doesn't take a colour value, but everything else that does will require you to call one of the Allegro colour creating commands first, which there are several of, some of which presume full alpha, some of which ask you to supply your own alpha value.

Or if every object has its own colour, but the alpha is global to everything for whatever reason, just code it so that your objects only store their colour as independent RGB colour values, then when you go to draw your bitmaps:

Also, if you're trying to achieve a fading effect of some kind then you're doing it wrong. The best way to do this would be to render the screen you want to fade to (or just a pitch-black bitmap) and then fade the alpha of that bitmap in, drawing it overtop of everything else. This will essentially make the elements you don't want to render anymore disappear. (That's right, fades to black are not done by fading everything out, but rather by fading black in overtop of everything!)

Yes, they should. But the final opacity should not be affected by the overlapping of graphics within the same widget.

For example, if I want to draw a translucent button that has a bitmap background and text over the background, I do not want the text to be transparent relative to the button's background, I want the text to be transparent relative to the the widgets behind the button.

Yeah at that point you have to do some kind of composition then. everything in the widget draws, then that is drawn at some translucency level. You can either do it with some super clever scissor clipping and drawing things multiple times, or just pre-render the widget to a bitmap, and draw that.

If you want certain things to overlap against themselves opaquely, but all those things as a whole to overlap translucently across something else, there's no magic way to handle that with shaders or blending settings. You need to first render your stuff opaquely to a blank bitmap, then render that bitmap translucently overtop of the stuff that's going to appear behind it all.