The bug is in this line:
FloatBuffer pQueuePriorities = memAllocFloat(1).put(0.0f);
The put is relative, which increments the buffer's current position (from 0 to 1). The buffer is not flipped after that, so when it is passed to VkDeviceQueueCreateInfo::pQueuePriorities, its .remaining() is 0. That 0 is automatically written to the queueCount member. So you're effectively asking Vulkan to not create any queues, that's why vkGetDeviceQueue fails.
An absolute put fixes the issue:
FloatBuffer pQueuePriorities = memAllocFloat(1).put(0, 0.0f);