Right, nk_handle is a union, you can use either id or ptr to store a handle. So, ptr is fine for a Vulkan image id.
As for why you get a black screen, note that Nuklear does not perform any rendering. You iterate the generated list of NkDrawCommand and it's up to you do the right OpenGL or Vulkan calls. For example, at line 606 of the existing demo, there's a glBindTexture(GL_TEXTURE_2D, cmd.texture().id()) call. In a Vulkan renderer, you'd use cmd.texture().ptr() instead.