Sampling is basically the act of asking what value is stored in a specific position of a texture. If you’re asking for a given pixel to sample values stored in two different positions at the same time, it generally must perform two distinct samples.
The texture only needs to be loaded in memory once, and part of it may be cached. So it is more efficient than sampling two completely different textures, but worse than sampling the single texture once.
I’m not sure if there is an added performance impact of texture objects, but adding one automatically adds a corresponding texture sample so it should at least be the same at a minimum.