By default, all of your projects are private and only visible to you. However, you can create a team to easily share projects with the same group of people, whether it's your team, your organisation, or a classroom.
You can transfer ownership of a project from Personal space to Team space in the project list page.
There are four access levels for team members:
Viewer - view all projects, datasets and members of a team. They can leave comments in the projects, but can't change anything. Viewers can Duplicate a project to their personal space to make changes, or request additional access. Note that when duplicating a project from a team to the user's personal space, custom environments and integrations are not preserved, and vice versa.
User - execute all notebooks within the team and change input cell values.
Member - edit all or create new projects or datasets within the team.
Admin - all access rights, and an ability to manage team members.
The Team access levels complement the Sharing settings of individual projects.
That's what private projects are for. To create such a project, navigate to "Private projects" section in the sidebar (within the team), and click on "New private project" button. Keep in mind that private projects are still using team's computational resources. You can add collaborators to the project the same way as you would to any other project. It is also possible to make the existing private project available to the whole team and vice versa by updating sharing settings of the project. Note that only team's members and admins can create private projects.