I'm pretty sure this already exists. Configuration -> Helpdesk Settings -> Ticket Content. Set up your ticket types and set up custom fields for the ticket type. You can make certain fields Agent Only (so the end user doesn't see it when creating the ticket, an example would be something IT internal like a temporary password for a new user account), required (so the ticket cannot be created/edited without the field being filled) and Required for Closing (the field must be filled before the state can be set to closed.
You can put a custom field inside the answer for another field. For example, the first custom field is "Computer Required" for a new user, and inside the "Yes" option is the type of computer (laptop/desktop/etc). You won't see the Computer Type field unless you choose yes for Computer Required.