I know little about silent files in 3.x and nothing about silent files in 2.x.
The last 4 digits are just the number of the trajectory. If you do 5000 trajectories, you’ll get my_result_0001, my_result_0002, …, my_result_4999, my_result_5000.
I believe in ++ it was hardcoded to 4 digits.
I know for large parts of 3.x it is NOT hardcoded to 4 digits. It is a minimum of 4 digits, but it resizes itself larger if you use nstruct larger (nstruct 20000, for example. I did 2000000 once, it was a dumb idea, since it never got close to that number before the job ran out of cpu time.)