1) Yes, you can define your own custom module.
2) Yes, your custom module can include other modules, either NetSuite or custom.
3) Yes, you need to have
@NApiVersion
in your custom module header.
4) No, there does not need to be a Script record for a custom module.