No, it does not mean that. Every task can run on a single thread at full core speed. When one of these gets blocked (e.g. while waiting for relative slow IO from the main memory) another thread can run at the full core speed.
Note that with a single core, dual thread setup you can only use some of the resources in one thread at the same time. E.g. if you have two threads wanting to run and both need to read data from main memory then only one thread can do that. The other will have to wait. If you have two threads and one is doing something purely on-die (e.g. using the ALU) while the other is reading from main memory then both can run at the same time.
Think of it as having a shop with two employees but only one cash register. If both need to access the cash register then one will have to wait (do nothing). Or with luck only one needs to access the cash register and the other is busy talking to the next customer while the first person operates the register. (Thus doing two things simultaneously).
if it is not half the speed assuming I have only a single thread running
how much degradation is it with HT on? 10%? else?
It depends on per program. The worst live case I heard is a 30% total slowdown*2 (as in actually slower with HT turned on). The best theoretical case is nearly a 100% gain. In practice, it seems to average about 30% speed gain over using no HT.
*2: The 30% slowdown was in actual production code of a web spider. But worse things are possible. E.g. a database only allowed two threads on a 2 core, 4 thread CPU and a scheduler who schedules both threads persistently on the same physical core.
10-09-2014: Added two links with relevant information:
Wikipedia: Simultaneous multithreading