Was CP/M ever used, in practice rather than just as a tech demo, in less than 80 columns?
Most prominent here may be the Apple II with Micro-Soft's Softcard. While most users did use it with an additional 80 column card, it also worked well using the basic 40 character display.
After all, CP/M itself wasn't tied to any display size or a CRT at all. Various software in contrast did require a certain minimal display type, but that's much like graphics software requiring some VGA feature and therefore, while being a plain MS-DOS program, not able to perform on a PC without VGA (or better).
CP/M itself didn't provide any information about the availability of a CRT or its dimensions or modes. BDOS only offered very basic calls to output a character. In so far its handling of a terminal is much like with Unix, where as well all screen handling was part of an application. Unlike Unix, CP/M never developed a standard solution, so many programs, including all standards like Wordstar et. al., included their own way to configure and command sequences to handle screen dimensions.
Were any computers ever designed with less than 80 columns to run CP/M?
Answering this might be fuzzy, as CP/M was per definition not meant for a special computer, nor were most computers running CP/M designed for it.
Let's take the TRS-80 Model one. While maybe not 'designed' for anything that hasn't been produced by Tandy, it also needed a modification (ROM relocation) to run CP/M at all. Still, CP/M was not only available but also worked fine using the 64x16 display.
Wilson also reminded us of the Osborne 1, a computer build for the use of a software bundle based on CP/M. It originally featured a 52x24 display showing a window of a 128x32 virtual screen. All applications were, by default, configured for a 52x24 screen and, where useful, enhanced to take advantage of the virtual screen. For example, Wordstar and Supercalc did move the screen when the cursor reached the left or right border. When the document was set to be wider then 56 columns that is. Handling was done via a set of escape sequences or 'special' (read: non-CP/M) BIOS calls.
Short time after is introduction an update called Screen-Pac became available to show 80 or 104 columns as well, on an external CRT. To make it run a new (patched) BIOS had to be installed via SYSGEN
. The new BIOS offered an additional call to set the visible screen size as well as the virtual.