Light Green sockets represent Closures. They don't hold any particular value, and they serve to instruct the render how the rays should be treated. Closures can be added, and mixed (which is an Add operation where the closure colors are mixed). Closures are functions that determine the amount of reflected light from the surroundings to the incoming vector direction, and they are normally multiplied by a color. They can also be converted into strings using OSL. Purple sockets represent Vectors. They have three components, for X, Y and Z. They can be used as vectors, points, normals, or any type of data that can be represented by 3 components (they can even represent colors). Yellow sockets represent Colors. They are similar to Purple sockets, has they also have 3 components (Red, Green and Blue), but they are treated as colors and normally, conversions are done in color space. Light Grey sockets represent single values. Just like 0.0, 1.0, 0.5, -5.5, 3.1415, etc. Dark Green sockets represent integers (-2, -1, 0, 1, 2,...) White sockets normally represent Strings. They are not common and can only be used with OSL. Except for Closures, Integers and Strings, all other sockets components are Floating Point values (even integers are converted to floating point values, as the SVM only uses these). Now, sockets represent inputs/ouputs of information. How one uses this information is far beyond what is possible to give in one simple answer, as each value can have a different meaning depending on the context they are used. For example, the value 0.8 can mean anything (a roughness value, an IOR value, an angle, etc). Is up to the user to give these values a context.