The Code of Canon Law states:
The Lord’s Day, on which the paschal mystery is celebrated, is by apostolic tradition to be observed in the universal Church as the primary holy day of obligation. In the same way the following holy days are to be observed: the Nativity of Our Lord Jesus Christ, the Epiphany, the Ascension of Christ, the feast of the Body and Blood of Christ, the feast of Mary the Mother of God, her Immaculate Conception, her Assumption, the feast of St. Joseph, the feast of the Apostles [Saints] Peter and Paul, and the feast of All Saints (canon 1246 §1).
However, the episcopal conference may, with the prior approval of the Apostolic See, suppress certain holy days of obligation or transfer them to a Sunday (canon 1246 §2).
In accord with this canon’s provisions, the USCCB has ruled:
Whenever January 1, the solemnity of Mary, Mother of God, or August 15, the solemnity of the Assumption, or November 1, the solemnity of All Saints, falls on a Saturday or on a Monday, the precept to attend Mass is abrogated (source).
This covers the bulk of instances in which you will find holy days of obligation dispensed in the United States. However, there is one more provision of canon law to keep in mind:
Whenever he judges that it contributes to their spiritual welfare, the diocesan bishop can dispense the faithful from disciplinary laws, both universal laws and those particular laws made by the supreme ecclesiastical authority, for his territory or his subjects. He cannot dispense from procedural laws or from penal laws, nor from those whose dispensation is specially reserved to the Apostolic See or to some other authority (canon 87 §1).
What this means is that an individual bishop can dispense the obligation of a holy day of obligation for his diocese. That is why in some U.S. dioceses January 1 was celebrated as a holy day of obligation and in others it was not.