Blender 2.80 has solved all of these aspects.
Stable and well documented Python API for add-ons developers.
The Python API for 2.80 is documented in the manual. The API was completed on 24th of May, 2019. It's stable in the sense that there are no major changes between 2.8x releases at the time of writing. Add-ons written for 2.80 continue to work in 2.81 and 2.82.
User interface for Collections in the 3D viewport.
I assume this refers to the updated outliner. This has been completed, collections and view layer replace the old render layer system from 2.79. The concept is explained in the View Layers and Collections post by Dalai Felinto on the developer blog.
Keymap for left-click select that works well with the new tool system, and a new keymap compatible with other software.
The new keymap system allows you to choose between left- and right-click select. You can create completely customized keymaps. There is an Industry Compatible keymap included in Blender which may help professionals to transition from other 3D software.

Making image empty objects a fully-featured replacement for background images.
There are two image object types, the Reference and Background objects. Both are based on empties. This is only for images that do not appear in the render though. If you want your image to appear in the render, then the Image as Planes add-on is still quite useful.
Restore support for all the physics systems within the new dependency graph.
The major dependency graph changes have been completed. Some technical information about the design can be found in the wiki article Blender 2.8: Dependency Graph.
New subdivision surface and multi-resolution modifier implementations based on Pixar’s OpenSubiv.
The modifiers now use OpenSubdiv which has been integrated by Sergey Sharybin.