From the online Rhino help: http://docs.mcneel.com/rhino/5/help/en-us/index.htm#search-History
History was introduced at the end of Rhino 4 development (if I recall correctly) as a means to create associations between different modelling actions. A simple example is that of the Loft command. With
History Enabled when running
_Loft, the result will be that you can modify the input curves (move, rotate, scale, move control points, etc) and the surface will update without having to run the
_Loft command again. Whether you should always keep it on depends entirely on what you are doing and how comfortable you are with chaining history enabled commands.
My personal preference is to keep History disabled unless I explicitly need to use the functionality. I’m also partial to using Grasshopper for situations where I want to create associations between geometry and actions. With Grasshopper I can see those associations whereas with History you might not remember that geometry is tied in some manner.