When multi-windows or multi-threads

Hello,

when using multiple windows in one MS Windows executable,
(each window should be managed independently)

should VkInstance object be created per window or just only one ?

Also, similarly, if I do multi-threading,
the same question above (VkInstance) per thread or just one

As a beginner, there are many concepts and objects in Vulkan

May I find good github sources or books or web sites
explaining such as

objects, for which just one time initialization and sharing among windows
objects, for which each window separately initialize and manage independently

Thank you