Re: Just provide one API
"Provide one API--i.e., one set of functions that can be used to program everything."
You can have large / functionally near universal APIs like .Net, but there will always be a requirement for different APIs for different purposes.
"Make the API accessible via unmanaged calling conventions so people can use whatever programming language and development environment they want."
No - code and conventions should be managed - otherwise you get a zoo - and incompatibility issues forever more - which is what the .Net Common Language Runtime already fixes - it provides a near universal interface that allows you to programme Windows in nearly any language you want.