I want to move WCF contracts interfaces to third DLL and start consuming them from clients when I am generating proxy by hand.
Do those interfaces in the DLL have to
This is common and perhaps recommended approach.
Yes you should put the service contract on the service interface which will live in the contract dll.
Keep in mind that the namespace does not have to match the name of the dll. Assuming that your current assembly is something like CompanyName.Technology.Service.dll
with a namespace like CompanyName.Technology.Service
you should extract out the contract to another assembly BUT keep the namespace the same (providing it still makes sense to) and have an assembly name of CompanyName.Technology.Service.Contracts
. What you do not want to have is a namespace with the name "contracts" in it.