How do I create a Win32 window with a Vulkan context?

I am aware of libraries that already do this (like GLFW), but I would actually prefer do all of the window and context creation by myself.

There's a VkInstance. This encapsulates access to the Vulkan libraries on the system, including the extensions.
There's a physical device VkPhysicalDevice and a Device. The former encapsulates all the information about a piece of hardware, typically your GPU. The latter is a handle that lets you actually interact with it.
However, since you're focused on windows, what you're probably interested in is VkSurfaceKHR. This encapsulates interaction with a windowing system. On Windows, to interact with a window, you need to have an existing VkInstance, and you need to call vkCreateWin32SurfaceKHR and pass it a structure containing an HWND and an HINSTANCE. If it succeeds then you have a surface to which you can then present images.