There are a few different issues concerned here:
1. Addressed by first two patches. That fixes a random X11 fatal error (reproducible with vulkan-1 tests here). The vulkan surface is detached upon deleting the window with existing Vulkan swapchain but then when presenting to the surface handling in X11DRV_vulkan_surface_presented() has the invalid hwnd and vulkan_surface_update_size() tries to configue window based on random data.
2. Addressed by patch 3, a use after free / access violation when a new swapchain is created before previous one is destroyed. The crash is X11DRV_vulkan_surface_detach called with NULL driver surface. Previously the surface was 'invalidated' in win32u.window_surfaces_insert() when adding another surface (surface->hwnd is set to 0) but it is not deleted from widnow's surface list; then win32u_vkDestroySurfaceKHR deletes the surface but it is still linked into window's surface list (it is only deleted if get_win_ptr( surface->hwnd ) is not NULL which can't happen as surface->hwnd is 0 already).
3. Addressed by patch 4. Allows presentation to multiple swapchain to be actually presented onscreen (that would already work if those surfaces happened to be offscreen after patch 3 although making them offscreen is not needed). That allows d3d over Vulkan to work with multiple dxgi swapchains created for one window as well as, e. g, multiple d3d9 devices on the same window.