In my opinion, handling everything within a single Livewire component (both step-by-step form data and dynamic field logic) seems too bulky.
It's up to you, there's no really better solution, just keep in mind that if you will reuse this exact same form somewhere else it is obvious that you should put it in a dedicated Form object. Otherwise, do as you think its the best to you to handle it.
And to be honest, I’m not even sure if I should use Livewire for dynamic fields at all. I've seen opinions suggesting that it might be overkill since every update would trigger a request to the server. Some suggested using sessions instead, but I feel like that would be inconvenient.
Triggering a request for every update isn't a bad thing by itself since Livewire have been designed to work with lifecycles events, it just depends how you handle it. There's nothing bad in triggering a request if you want to add another input in the step 2 of your form, it just depends how you manage the lifecycles of your component.
My way to handle that would be to create regular public properties for each of your form inputs, then for the dynamic inputs case i'd create public array properties and just iterate on them. This tutorial is a good example of that solution.
Once you submit the form make sure to validate the inputs if needed and store the data it the way you need it.
I hope this will help.