It kinda depends on what you need to do exactly (the "many actions" you mention) but broadly speaking, yes, you should be able to group by project id
You may also want to remove duplicates while you're at it, you can do that with the Matcher.
I can't remove the duplicates, because they belong to their project ID's. But the geometry is the same and creates problems with the toplologybuilder.
You might want to consider whether looping is appropriate at all. Generally, looping is only needed if the calculated values from one iteration are needed as inputs into the next iteration.
If instead the issue is that it is just that you have multiple, but independent projects/subnetworks, then looping is probably not required. FME can transform these in parallel, and independently from each other, by making use of the "Group By" Parameter. If there are multiple Topologies that you wish to build based on each subnetwork having a different Project ID, then use Project ID as the "Group By" parameter in ToplogyBuilder. This will output independent Toplogies for each Project ID.
This is a form of iteration/looping. What FME does in a logical sense is group up the features into clusters of features, and then sequentially processes each cluster in turn independently of each other (even though physically the process may actually use parallelism to get the best performance).
Since you want to keep the projects independent and have many transformations, rather than setting the Group-By parameter to projectID on every transformer, I would use wrap the process in a custom transformer, and set the (parallel processing) Group By parameter to projectID. You can keep the Parallel Processing level to No Parallelism, or if you have the resources, run multiple projects simultaneously.