Not to ignore the previous convo, just throwing in my 2 bits from my own experiences.
BASIC was king of the 8-bit systems in terms of ease of use, millions of simple games were made with it, and that includes "professional" level games you bought on disks from the store. 6502 assembler was used for highly optimized games, typically anything beyond your basic pong level game that demanded higher performance. Generally 6502 was needed to do anything impressive on the 8 bit systems at a reasonable frame rate. Hence why most of the "professional" games we smile upon 30+ years later are written in pure assembly.
MS-DOS was a battleground of programming languages.. but PASCAL and then later C are the big standouts. Compilers in those times weren't optimized to the level they are today (as mentioned above), for example if you used C to move memory to your VGA ("plot pixels") using MS C/C++ 7.0, they would be moved in byte sized (8 bit) writes at a time. Programmers generally would write 286 assembly modules for this which would allow them to do WORD sized (16-bit) writes to VGA, resulting in massive performance gains. There are plenty of examples of that, typically when you needed to move memory as quickly as possible -- you used 286 assembly.
These assembly modules would be compiled into objects and later linked into the executable during compilation. Later, compilers allowed "inline assembly" to be used (-G2 flag for 286 inline in microsoft compilers), which would allow you to throw assembly functions straight into your C code with FAR less hassle. That was a GLORIOUS thing!
Today if you're looking to play around with the old systems, I'd suggest learning basic until you can push it to it's limits, then switch to 6502. For MS dos machines go with straight C and later dig into some 80x86 assembly for optimizations (I do love quickbasic though, nice little games can be made with it). Minor learning curve of irrelevancies with the dated compilers, but it should only take a little bit of your time.
As for newer compilers making 16-bit binaries ...dunno... I always used inline even with win98 (my brain is dated however, I decided to go back to college for accounting and left my spirited roots behind ((until now)). I think it's still a good thing to learn some assembler and the 80x86 microprocessor in general, if anything for a better understanding of what your C or C++ code will do, and for debugging. I always find that people who are only HLL (high level language) oriented have a difficult time forming solutions to simple problems. So dig into those books anyway 😎
If your goal isn't necessarily to just make new software but also to improve upon early DOS games that might've been inferior to Apple and Commodore versions by adding EGA/TGA support and 3-Voice/Adlib sound -- then you would want to be very familiar with the original languages, no?
If you don't understand the original languages, you'll have a very difficult time understanding the source code, one would imagine.
There are two ways of "improving" early DOS games that I can see..
1) a full rewrite into lower level language (which may provide no bonus at all if you use the same algorithms)
2) rewriting functions for higher performance i.e. blitting functions, line drawing, collision, clipping, etc etc).
If you don't have the original source code.. then it's up to your imagination to emulate the game.
As for adlib support, that can be an entire technical conversation in and of itself. You'll either have to learn how to program the adlib, or include somebody elses sound library into your own project. Both of which are going to require you to understand the codebase you're working in.
Sup. I like computers. Are you a computer?