The mark-to-base attachment lookup attaches marks to ligature glyphs. This means that every base glyph is supposed to have more than one attachment point for a certain mark glyph. An example of a simple mark-to-ligature attachment lookup:

lookup marks {
    ignore mark except @marksAbove;
    mark @marksAbove <: -25, 160>;

    base ff @marksAbove <: 90, 200> <: 160, 200>;
    base ffl @marksAbove <: 90, 200> <: 160, 200> <:230, 200>;
}

Here, every ligature glyphs has the same attachment points for all mark glyphs, but this is not required. (It is a lot easier to use one anchor for all marks though.) It is required that all mark glyphs that are used are attached to all ligature glyphs that are used.