The cross platform project should be selected if you want to create a project that uses OpenGL, which is compatible with Windows, Linux, and Mac. And yes, you can use the DirectX, Android, and/or IOS templates within a shared project.
The shared project doesn’t actually have a specified platform, so it can’t launch on it’s own. Your platform specific projects (Cross-platform (OpenGL), DirectX, Android, IOS, etc.) use the files within the shared project to launch within their framework. Each platform specific project will still have their own Program.cs, Icon.bmp (or Icon.ico), dependencies, etc, but all the code files, content files, etc. should be put in the shared project.
There’s probably other ways of doing what you require, but this is how I’ve been doing it. There are some issues I’ve had with using this setup initially, however I figured it out. Like for example: sometimes .cs files will display as “Miscellaneous” instead of OpenGL, DirectX, or whatever and won’t be recognized (bunch of errors). To fix it, you have to exclude the file from the project, then reinclude it, and it’ll work fine. Small oddities like that, but it rarely happens.