Usually, a special Haftarah (meaning one that pre-empts the regular haftarah designated for the weekly parsha) is said on a Shabbat that has a holiday such as Chanukah, and Shabbat Rosh Hodesh. (Shabbat Hagadol MAY be an exception, though as I understand, it commemorates the 10th Nisan when the Pesach sacrifice was first taken and guarded for 4 days. Please feel free to correct / edit.)
Machar Chodesh is a special haftarah that is recited whenever the first day of Rosh Hodesh is on Sunday. (Note that I am pointing out 1st day Rosh Hodesh, which may not necessarily be the 1st day of the new month. I'm stating this because the first verse of the haftarah has the term Machar Chodesh which means, "tomorrow, is the New Moon", i.e. - the 1st of the month.)
Why is there a special haftarah designated for such a Shabbat when the occasion occurs on the next day, and in the case of a Sunday / Monday "Rosh Hodesh", the date is actually 2 days away.
Note: - Other "special" Shabatot such as Shabbat Parah require a special maftir. Every occasion that has a special maftir has a special haftarah as well. (seems to indicate a general rule that the maftir and haftarah are "related" somehow?) Shabbat Hazon, e.g. does not pre-empt the regular weekly haftarah.