There is an oft-abused program named rundll32.exe. Why does its name end in 32? Why not just call it rundll.exe? (I will for the moment ignore the rude behavior of calling people stupid under the guise of asking a question.)

Because there needed to be a way to distinguish the 16-bit version from the 32-bit version.

Windows 95 had both rundll.exe (the 16-bit version) and rundll32.exe (the 32-bit version). Of course, with the gradual death of support for 16-bit Windows, the 16-bit rundll.exe is now just a footnote in history, leaving just the 32-bit version.

But why did the two have to have different names? Why not just use the same name (rundll.exe) for both, putting the 16-bit version in the 16-bit system directory and the 32-bit version in the 32-bit system directory?

Because Windows 95 didn't have separate 16-bit and 32-bit system directories. There was just one system directory called SYSTEM and everything hung out there, both 16-bit and 32-bit, like one big happy family.

Well, maybe not a happy family.

At any rate, when 64-bit Windows was introduced, the plan was not to do things the crazy mishmash way and instead separate the 32-bit files into one directory and the 64-bit files into a different directory. That way, no files needed to be renamed, and your batch file that ran rundll32.exe with some goofy command line still worked, even on 64-bit Windows.