How to make one branch public while the others remain private on GitLab?
I'm not an expert in GitLab but I would assume it to be similar to other solutions like it (bitbucket, github).

A simple way to achieve this would be to clone the repo in another private repo instead of doing a separate branch.  In effect this would work similar to having your local repo and the gitlab repo.  Merging a branch and merging with another repo is not much different with git