Thought it was about time I posted code. At least, more than just randomly posting in threads. Just finished this and seemed like a good starting point. I know it's mostly information about core commands, but I'm sure it's still valuable to some.

Information on how to manipulate/create/etc. LayerStates in code. Not sure when these were introduced, but they are working in 2009. I've also included a rewrite of the layerstate-save command to include the option to 'overwrite' LayerState, if already exists.
Enjoy.
Code:
;;; --------------------------------------------------[LayerStateInfo.lsp Begin]------------------------------------------------------------
;;; LayerState Manipulation Information and Subroutines
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; Aside from 'AT:LayerStateSave', Alan J. Thompson claims NO ownership and NO responsibility for following coding. All are core AutoCAD.
;;; Compiled from: "AutoCAD 2009 Help: Developer Documentation"
;;; Tested and verified using AutoCAD Civil 3D 2009
;;; Compiled by: Alan J. Thompson, 09.09.09
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; LayerState Values
;;; Combine numeric values to use more than one
;;; Example: (apply '+ '(1 2 4 8 16 32 64 128)) => 255
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; Mask: An integer sum designating which properties in the layer state are to be restored.
;;; 1- Restore the saved On or Off value
;;; 2- Restore the saved Frozen or Thawed value
;;; 4- Restore the saved Lock value
;;; 8- Restore the saved Plot or No Plot value
;;; 16- Restore the saved VPVSDFLT value
;;; 32- Restore the saved Color
;;; 64- Restore the saved LineType
;;; 128- Restore the saved LineWeight
;;; 255- Restore everything
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; Restore Flags
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; Optional integer sum affecting how the layer state is restored.
;;; 1- Turn off all layers not in the restored layer state
;;; 2- Freeze all layers not in the restored layer state
;;; 4- Restore the layer state properties as viewport overrides (requires viewport to be not a nil value).
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; Commands (Return T if successful, nil if not):
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; Most useful, with information
;;; ----------------------------------------------------------------------------------
;;; LayerStateDelete        (layerstate-delete "LayerStateName")
;;; LayerStateList        (layerstate-getnames "T to include hidden layerstates, Optional" "T to include xref layerstates, Optional")
;;; LayerStateRename        (layerstate-rename "OldName" "NewName")
;;; LayerStateImport        (layerstate-import "Filename.las & path")
;;;                              Example: (layerstate-import c:\\mylayerstate.las)
;;; LayerStateExport        (layerstate-export "LayerStateName" "Filename.las & path")
;;;                              Example: (layerstate-export "Storm" "c:\\Storm.las")
;;; LayerStateRestore        (layerstate-restore "LayerStateName" "Viewport ename, nil for ModelSpace" "RestoreFlags <- See above list")
;;; LayerStateImportFromDWG    (layerstate-importfromdb "LayerStateName" "Filename.dwg & path")
;;;                              Example: (layerstate-importfromdb "Storm" "c:\\Storm.dwg")
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; All LayerState-* Commands (Refer to AutoCAD 20XX Help: Developer Documentation for additional info.)
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; layerstate-addlayers    Adds or updates a series of layers to a layer state
;;; layerstate-compare        Compares a layerstate to the layers in the current drawing
;;; layerstate-delete        Deletes a layer state
;;; layerstate-export        Exports a layer state to a specified file
;;; layerstate-getlastrestored    Returns the name of the last restored layer state in the current drawing
;;; layerstate-getlayers    Returns the layers saved in a layer state
;;; layerstate-getnames        Returns a list of the layer state names
;;; layerstate-has        Checks if a layer state is present
;;; layerstate-import        Imports a layer state from a specified file
;;; layerstate-importfromdb    Imports a layer state from a specified drawing file
;;; layerstate-removelayers    Removes a list of layers from a layer state
;;; layerstate-rename        Renames a layer state
;;; layerstate-restore        Restores a layer state into the current drawing
;;; layerstate-save        Saves a layer state in the current drawing
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; Rewrite of layerstate-save to include option to overwrite existing
;;; ----------------------------------------------------------------------------------------------------------------------------------------
;;; AT:LayerStateSave (Option to overwrite)
;;; #Name - LayerState name
;;; #Mask - Numeric value for restoring options (see above list)
;;; #ViewportID - Ename (ads_name) of the viewport to which layerstatename should be restored.
;;;               If viewport is nil, the layer state is restored to model space.
;;; Alan J. Thompson, 09.09.09
(defun AT:LayerStateSave (#Name #Mask #ViewportID #Overwrite)
  (and #Overwrite
       (layerstate-has #Name)
       (layerstate-delete #Name)
  ) ;_ and
  (layerstate-save #Name #Mask #ViewportID)
) ;_ defun
;;; ----------------------------------------------------[LayerStateInfo.lsp End]------------------------------------------------------------