We know there is an Action on the Project Properties page via which the PMs can Add to My Projects and/or Remove from My Projects. This basically adds or removes stuff from the My Projects portlet.
Is there a way to create Add to My Projects & Remove from My Projects as a link on a custom portlet? Or is there a way to show this action link on other subpage of a project or automate it via gel script?
The database tables behind that function are the prList and prListMember ones so you can build an (unsupported) method of populating/removing those entries (with direct SQL - hence unsupported), but since it is all pretty much built-in functionality I don't think that there is anything else much you can do with it.
An alternative, create your own version of 'My Projects' based on a NSQL query, where it shows all projects that the user is a PM of, or, that they have added to their 'My Projects'. As it is a NSQL query, you can add additional functionality, like 'Latest Status Report Overall Score', 'No. Open Risks', 'Project over budget' type functionality to provide a quick overview of the projects. Have completed this concept for several PPM clients.