One of the functions of a BMS is to prevent overcharge of a cell while still charging the other cells. The usual technique is to "shunt" some of the charge current around the cell using a resistor. This allows the other cells to accept more charge while protecting the cell that is full. If you charge at too high of a current, you can overwhelm the bypass resistor so often the BMS has a way to tell the charger to throttle back (or it throttles is back itself via a FET). The extra energy shunted around the cell is lost as heat. Another technique to compare groups of cells (like cell 1 to cell 2) and charge up a capacitor (or inductor) from the higher voltage cell, then discharge it to the lower voltage cell. This "shuttles" excess charge from the fuller cells to the less full cells. This technique is more complicated, wastes less energy, makes your recharge time faster, and only works well if your cells are pretty unbalanced. It is hard to move charge when the difference in voltage between cells is small. Also if the highest cell and lowest cell are not near each other, the technique is not very effective. Does this help?