Language: C was predominant, but C++ was around and used.
Dev tools: Development environments included those from Borland and Watcom (almost unheard of today) among others. Both Borland and Watcom had their own compilers and their own IDEs. Borland was by far the most popular in general, though Watcom had a reputation for producing faster compiled programs, iirc.
APIs: Few APIs existed or were used. Video programming often consisted of directly writing pixels to the VGA framebuffer. Even 3D game were software rasterized. The Miles
sound API was used for audio, which included drivers internally as the OS didn't have it's own audio framework or drivers. Keyboard and mouse input were generally read straight from the system. There were a couple popular memory extenders for 32-bit mode which were very popular and necessary towards the end of DOS's reign. The hardware was simple, thankfully, but it was definitely a pain in the butt writing games that worked on a variety of hardware. Libraries to deal with all the simple low-level stuff (like SDL, SFML, GLFW, etc.) did not exist, and porting was a huge amount of the work in releasing a game due to all the different platforms and hardware popular at the time (though its getting equally bad these days, what with all the consoles, handhelds, and mobile devices, plus Windows and the fringe desktop OSes like OSX and Linux).
On a side note to the previous point, Doom was not 3D the way we know it today. That is, it imposed huge limitations on 3D environments due to its highly specialized software rasterization algorithm, and characters and items were all jut sprites.
File Formats: Asset formats were just as proprietary to the engine then as they are now. I vaguely recall Bink being around back then for video (which was very rare, generally only in opening and closing sequences), and I think Creative had some specialized sound formats. I'm unsure what source or intermediary formats were popular for sound or video back then, but TGA was pretty popular for images.