Your use case is very simple, so relying on GIT_STRATEGY=fetch is probably sufficient and as you said the default behavior.
You should be cautious using artifacts unnecessarily as they are uploaded to the gitlab server.
The answer to your question generally depends on a few things, like the size of your repository, network connection, runner executor type, ...
A bit too long for a comment, so converting to an answer:
That's super broad and highly depends on your final needs IMHO, if you're full AWS and ok with being vendor locked down, then code commit/code build/code pipeline is great as it's nicely integrated now.
If you have needs outside pure AWS services, that may get harder, for exemple if you plan on ...
You are not able to create multiple .gitlab-ci.yml but you can manage to have what you want.
You currently have multiple software in the same repository with the same CI/CD Pipeline or jobs for your softwares.
You can use include in order to include local files from your repository, so you would get
- local: 'my_folder/.gitlab-ci.yml'
You can ...