To clarify: Any attempt to use al_set_target_bitmap() followed by al_draw_bitmap() or a similar function will fail, unless the desired target was the screen already.
There are exceptions. If the target was a software bitmap, or a bitmap that has been locked and therefore is a software bitmap, the call will succeed. Any time the program targets a video bitmap, the call of al_draw_bitmap() will end up with the image on the screen.
Attached is an image which helps to display the problem. On the left is the program in OpenGL mode, on the right is the program in DirectDraw mode. The background image is done with putpixel using a chunking algorithm, so it's technically done in software and then drawn to the screen.
The player is somewhat similar, using a paletting technique that is software.
The borders of the windows use this as well.
The interiors of the windows are not being cleared by al_clear_to_color() because calling that routine always clears the screen instead. I came up with a workaround that uses FBO's and glDrawPixels which I will post if anyone is curious.
The window in the top right isn't having buttons drawn to it in OGL mode, once again, because those al_draw_bitmap() calls end up on the screen, which then gets cleared by al_clear_to_color().