1. Well, there's the_title(), the_author(), the_content() ... I can go on, but it's clear the use of the_ for function name prefixes is a mere naming convention, partly owed to WordPress' evolution from b2. You don't like it, fine. However, how does WordPress function nomenclature refer to your original points?
2. Like say get_the_category() -- which exists in the core and fits with your idea of an "API" of sorts (but see below).
the_category() echoes or prints the categories, whereas get_the_category() returns them. Two different functions doing nearly the same thing; hopefully the naming convention in play here defines the 'nearly' well enough.
3. True. But then all the documentation on it states what it does (hence the reason for the documentation?). And I imagine for most people having template functions like display_formatted_html_unordered_category_list() would be overkill, as well as difficult to remember.
You say you come from a development (C#) background. With such a background, I expect you to understand that the terminology (and how it is used) is important. So with that in mind: the_category() (there is no the_categories()) is not what we mean when *we* refer to an API. Around here API refers to the 'hooks' and whatnot that can be used (by programmers!) to modify how WordPress behaves and what it returns, or to work around it's built-in functionality so one may use their own, and many of these hooks are designed for plugin development. In regards to the_category() et al, in WordPress parlance these are known as template functions or template tags. They are not an interface into WordPress but rather a framework for displaying the various elements of ones blog. Anyone designing (or editing) theme templates will need to know about them and what they can (and cannot) do with them, but I nor I think they would refer to themselves as programmers for just making use of them.