1. An intermediary computer that does set-up and filtering for another (usually more powerful but less friendly) machine (a "back end").
2. Software that provides an interface to another program "behind" it, which may not be as user-friendly. Probably from analogy with hardware front-ends that interfaced with mainframes.