Select point (user input) on 3D surface for 2000 surfaces automatically opening after user selects a point

This could be easily done through a scripted module (Module Overview — 3D Slicer documentation). You could have a a user interface featuring (1) a directory selector to point to where your .ply files lie and (2) a “Next” button that will save the recorded data and load the next model in the dataset. In addition, you will probably want to add some other widgets to select the output file for the results, etc.

You can use GitHub - RafaelPalomar/BulkLabelStatistics: Module to compute labelmap statistics in bulk as inspiration for batch loading data from a folder.

When it comes to the selection of one point, you could use callbacks to control the workflow for placing one (and only one) point. This topic might be helpful for that: How to access Node in Scene?. Alternatively, I would suggest to use the Template Markups (Markups — 3D Slicer documentation) to control the workflow and limit the point acquisition to 1.