Fred is correct, you can add any subfolders in the code folder, however there are a few common names I have seen and that other developers will recognise (which makes getting other SilverStripe devs involved easier as they don;t have to learn your custom structure).
/pagetypes - for your custom pagetypes
/objects - for dataobjects
/models - an alternative for dataobjects
/admin - for modeladmins
/extensions - for dataextensions or extensions
/controllers - for customer controllers
same thing applies to the yaml for example something like routes.yml should ideally contain routing configuration.
Common sense and verbose naming is key.