In short, custom property sets hold data (as a set of parameters), custom property pages display data (in a dialog using user-interface controls), but they are closely tied together and are often referred to by the more generic term custom properties.
More specifically, a set of custom parameters defined as a CustomProperty or CustomProperty object contains pure data. The layout for a property page is defined in conjunction with the parameter data as a PPGLayout or PPGLayout object. The property page itself as a PPG or PPG or PPG object combines the information from the data and the layout and displays the information and any other custom controls, messages or images defined for that page.
The user can then view and modify the set of parameters defined on that custom property set along with using any logic defined for the dialog layout.
More about Custom Property Sets
A custom property set represents a set of related parameters that can be attached to a scene item, such as a 3D Object or the Scene_Root. The individual parameters can be standard data types (integers, booleans, doubles, strings) or more complex Softimage data types such as RGB/RGBA colors, fcurves and GridData or GridData (2-dimensional arrays).
Custom properties are one of the most useful tools available to plug-in developers. These objects can be used to store custom 'user' data in a scene, centralize the control of other parameters (via Proxy Parameters and Marking Sets) and build user interfaces. For example, CustomProperty objects can be used to store Game Engine attributes inside a scene, or to display a dialog box with settings for an Import plug-in. Custom Properties make a large range of UI widgets available.