From the function declararion, it looks like you are using DirectX 9. Am I correct? In Direct X 9, those handles are merely a way to identify the technique so you can set it. Setting the technique using a handle is faster than using it's name each time because string comparisons can be slow. The method GetTechniqueByName is used so you can get the handle once and just use it. It's only an identifier. As far as I know, you can't release or delete a technique without freeing the whole effect. Here's more info http://msdn.microsoft.com/en-us/library/windows/desktop/dd607390(v=vs.85).aspx
Actually, from d3dx9shader.h:
typedef LPCSTR D3DXHANDLE;
A D3DXHANDLE is just a string.
I believe that the MSDN page you've linked is slightly misleading; what should be the slower part is all of the Get* calls, as they would require parsing the effect and searching for the name. Doing them upfront at creation time rather than at runtime should mean that once you have the handle - I'm assuming (i.e. I haven't seen the source code for D3D9 Effects so I don't actually know...) that Effects is using a hash table or similar container to map each handle to it's register slot - it's actual underlying register can be retrieved more quickly and without all of the parsing/searching.
The fastest way of all is of course to bypass all of this and just call Set{Vertex|Pixel}ShaderConstant directly yourself, but if using Effects that's not necessarily going to be the most practical. This is what all of the Effect::Set calls ultimately end up doing, however, as you can observe for yourself if you attach an ID3DXEffectStateManager to your effect.
Neither the debug runtimes nor PIX will report a D3D resource leak on handles. It seems reasonable to work on the basis that the ID3DXEffect owns the memory used for them and that memory is destroyed when the Effect is Released.