I would stick to baking in Blender, or try a program like xnormal. These will let you have more control over the bake process (by using cages, blockers, being able to customize the user-normals and lock them down so that it wont change between programs depending on how the program triangulates a model, use tricks like floating geometry, and even use completely different topologies). You’ll also have more control over the map data itself (like being able to specify the tangent basis used for the normal map so that it will be synced to the renderer). Zbrush doesn’t use smoothing groups or let you specify the tangent basis, so a normal map that it creates might not match what your renderer or game engine expects.
To bake in Zbrush, you need to have one UV’d model with all the sculpt/paint data on higher subdivision levels. So you’ll need to append the UV’d lowpoly model to the sculpt and use Tool: Subtool: Project All to transfer the detail. Subdivide and repeat the projection, and continue this process until you have all the detail transferred over. This kind of projection can lead to some issues (especially if you have a bunch of overlapping geometry), so you may want to store a morph target so that you can try to ‘paint back’ any projection errors. Once you have the single UV’d subtool with all the sculpt data on it, you can either use the Tool palette to create the individual maps, or try to create them all at once using the Multimap Exporter Plugin. For the normal map you might want to try an Object Space map, and use a tool like Handplane3D to translate it to a Tangent Based map