All of that design infrastructure needs to be built by somebody, and that somebody stands to make a forunate. The tasks you listed are a decent summary of the likely eventual outcome.
But:
• Who will do the work to create this beautiful API? • Who will create this coprocessor architecture? • Will this theoretical stack be built by Microsoft, Amazon, Google, etcetera, or be FOSS?
These questions are completely unanswered, and will affect my users of whatever quantum. When analyzing data, one cannot usually just gloss over the underlying math. All abstractions, by definition, are incomplete.
But that's the exciting thing about right now. Most inventions occur when science outruns engineering. When engineering and cutting edge science just about to finally converge, that's when market opportunities are most prevalent.
The vast majority of software engineers---even if we filter to just the set who have actually used GPUs for a project---only know the high-level APIs (OpenGL for graphics, CuDNN for AI, etc.). Fewer engineers are familiar with the more general-purpose APIs (CUDA, OpenCL, etc.), and even fewer still know any of what goes on underneath those layers.
Bottom line: it takes a relatively small community of people to build tools for everyone else to use. People will need to know how to use the highest level of APIs, but most need not understand what goes on underneath that.
Google wrote a nice one that makes use of WebGL: http://www.quantumplayground.net/
Quantum algorithms are so vastly different in nature from classical algorithms that it will necessarily be its own branch of science. It takes an entirely different mode of thinking; for example, basic physics laws forbid you from copying a qubit that is in an arbitrary quantum state. That's right, you cannot copy a quantum variable as that would violate fundamental laws of the universe as we know it. Most computer scientists are not used to that kind of thinking. However traditional computer science thinking will not vanish, because quantum computers will never be a replacement for classical computers; they are good at speeding up very specific classes of computations and not particularly suited for general computing or building interfaces with the outside world.
Quantum computer science and classical computer science will be two fields of study that will both continue to evolve in their own right.
If I had to bet I would guess that quantum programming is going to be more like "linear programming", where instead of programming the algorithm instructions you program by preparing the inputs that you will pass to the specialized subsystem.
Seems naive to me.
Quantum computers may work in analogous ways, but making predictions about what you'll need to know is presumptuous. `factor` is the easiest way to use a quantum computer in an "api" sense and, by itself, isn't very useful at all.
Quantum computers will likely manifest themselves as co-processors, and you'll have a nice well-abstracted API to access those implementations within traditional languages, i.e.