Does a secondary VkCommandBuffer need to come from the same pool as the primary VkCommandBuffer?
No.
Why does every thread need a Vk*Pool?
They don't.
All types of pool can be used by multiple threads, but they are externally synchronized. This means that if you do use a pool from multiple threads you must manually ensure that all uses of a specific command pool are synchronized to avoid concurrent access.
This design is so that single threaded use of a pool does not need to pay the overhead of synchronization when it isn't needed.
Can anyone show me a scene must use multiple-pools, and one pool multiple-xxx cannot be done?
As above, this isn't true, and it can be done.
The underlying question is a question of efficiency, which will depend on the engine design, which is beyond the scope of a simple SO answer.