No, it does not requre that device is in Discoverable mode. And yes, it does something like attaching and detaching to/from device.
Added: it does not require that device is discovered before if you know the device's address. If you don't know the devices address then, of course, you need to discover the devices t know which one you need to check then. If (and when) you know the device's address you may create wclBluetoothDevice object (it shows in the sample I uploaded yesterday as an answer to one of your question), the assign address to the created object and call its InRange function.
Additional information for WCL 6.2: WCL 6.2 does not have that function but it can be simulated by calling EnumServices function (as I described here on forum already).