3D APIs are like GUI toolkits: Use the one supplied by the vendor. Metal on Apple, DirectX on Microsoft, whatever proprietary one comes with the game console(s) you're developing for.

If you're a gamedev, your engine should abstract all these away. If you're a gamedev, you should be using a commercial engine unless you have a John Carmack on staff.

OpenGL and Vulkan are the worst of all worlds and really only make sense on Linux or Android, which have nothing else.

Quick shout-out to a graphics abstraction library that works quite well: sokol.

https://github.com/floooh/sokol

It has DX11, Metal, and OpenGL backends (with optional shader compilation tool from GLSL to each target), which is probably all you need to get cross-platform support for all desktop and mobile targets. Rewrote my OpenGL code to this, was a pretty nice experience. The subset of graphical features it exposes seems more than good enough for simple 2D games (probably enough for simple 3D ones also). Can't say more than that though, since I haven't seen a shipped 3D game on Steam using it yet.

Though what we ultimately need for the future is a Metal-like API that runs on all platforms (since from what I've heard from other graphics developers Metal's API design is quite nice and finds the right balance between low-level control and high-level usability). The experimental SDL_gpu development (https://gist.github.com/icculus/f731224bef3906e4c5e8cbed6f98...) strives to achieve this, although it's still in the early stages...