I would like to trigger a Build on Gitlab when a Git Tag is pushed to the repository. At the same time I would like to increment the version number on a file located on the repository before building it on a runner. My question is . Is a webhook needed for this purpose ?
No.
You can use the CI_COMMIT_TAG
pre-defined variable in any pipeline for tags to define which jobs you want triggered in your CI YAML file.
You can then use the script section of your CI job to do almost anything you want, including cloning the repository, making changes and push those changes back up.
How you want to make the repository changes is up to you. Many use SSH, but you can also use one of the various available tokens. Making repository changes within GitLab CI is covered by many tutorials and other StackOverflow answers, such as https://stackoverflow.com/a/66146028
As you're asking about multiple things, if you have an issue with getting something working, please follow the StackOverflow guidelines and post what you've tried, and what's not working, while sticking to one problem.