Shulchan Aruch Orach Chayyim 25:12:
וביום ראש חודש חולצים אותם קודם תפלת מוסף: הגה וה"ה בחוה"מ
On Rosh Chodesh, we remove the tefillin before Musaph. Rama: This applies to Chol HaMoed as well.
Magen Avraham 25:31
כתב הרמ"ע בתשובה לחלצן קודם הלל והש"צ אחר הלל ... וכן ראוי לנהוג
Rama' [R. Menachem Azariah of Fano] wrote in a responsum to remove them before Hallel, and the chazzan after Hallel ... and so it is fitting to practice.
As you note, common practice is to follow Magen Avraham and remove them before Hallel.
The people you saw removing them immediately following Hallel may have mistakenly copied what they had seen the chazzan do.
Those removing them immediately before Musaph are following the straightforward instruction of Rama, and acting on Chol HaMoed in the same way as common practice is to act on Rosh Chodesh.
As far as those removing their tefillin immediately following Keriat HaTorah, this seems to be a variant of Rama's practice of removal before Musaph.
It could be based on the practice recorded in Chok Ya'akov 490:2 who explains that the Torah reading of the second day of Chol HaMoed Pesach (first in the Diaspora) is connected to tefillin. That being the case:
איך יסיר התפילין קודם קריאת הפרשה הזאת ומשום לא פלוג יסירם תמיד אחר קריאת התורה
How can one remove his tefillin before reading this portion? And in order to avoid making a distinction one always removes them after Keriat HaTorah.