Short answer
The containerPoint methods date from a feature request back in 2012, and today, they're a bit confusing.
The best answer is Leaflet maintainer Vladimir Agafonkin's description:
"layerPoint is actually a point relative to the map layer (the div which contains tiles and markers), not the outer map container. What you need is map.layerPointToContainerPoint. But I agree there's no convenient method to get it immediately, so scheduling this for the next version."
Long answer
In greater detail:
The core public conversion methods in Leaflet, although seldom used by application developers, are L.Map.project(latlng [, zoom]) and L.Map.unproject(point [, zoom]).
Web maps are split up into a grid of tiles, each with the same number of pixels. At higher zoom levels, the map is divided into a greater number of tiles, with a corresponding greater number of pixels. Thus the pixel size of the map is dependent on the zoom level.
This means that if you're messing around with a Leaflet demo window in your browser, the output of L.Map.project` for a given latlng will only change if you zoom in and out.
As of the latest version of Leaflet (0.7.3), the definition of L.Map.latLngToLayerPoint reads:
latLngToLayerPoint: function (latlng) {
var projectedPoint = this.project(L.latLng(latlng))._round();
return projectedPoint._subtract(this.getPixelOrigin());
}
By contrast, L.Map.latLngToContainerPoint reads:
latLngToContainerPoint: function (latlng) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}
with L.Map.layerPointToContainerPoint defined to be:
layerPointToContainerPoint: function (point) {
return L.point(point).add(this._getMapPanePos());
}
The private map method _getMapPanePos() returns the offset between the current map position and its position when it was first created. This only changes during a map pan (not during zoom), so the difference between the layerPoint and containerPoint corresponding to a given latlng is that the layerPoint is the position of the latlng in the map container <div> with the map at its initial position, while the containerPoint is the current position of the latlng in the map container <div>.