If you bind a constant to one register, it will be there until something binds at the same place or if you bind that spot with null.
My approach of having constant buffer i want to "share" is to have a constant buffer struct in a include file. and then including that file into all the shaders im using. It's convenient and simple.
The difference with a single value and a cbuffer is how you bind the data and how you have to allocate the buffers. if you have a cbuffer, with 128 floats, you have to create a buffer thats equal of that size. while a single value wont let you create a register spot thats of a difference size than that type. Regularly, it's good to have a cbuffer with specific meanings. In other words, having a cbuffer that gets updated every frame, one that gets updated for each material and maybe one that contains some sort of Per second data.