Not a easy answer unfortunately since it depends on a large number of factors. Skill level of the attacker is very relative when you consider that using a hex editor or ollydbg against something that has been obfuscated by nearly any tool can be very time consuming regardless of your skill level. Yet switching to tools such as IDA Pro or using de4dot that recognise popular obfuscater software signatures and have automatic routines to "ignore" them can make it a lot easier for people who know how to use these tools. E.g. de4dot claims to support the following:
Agile.NET (aka CliSecure)
Babel.NET
CodeFort
CodeVeil
CodeWall
CryptoObfuscator
DeepSea Obfuscator
Dotfuscator
.NET Reactor
Eazfuscator.NET
Goliath.NET
ILProtector
MaxtoCode
MPRESS
Rummage
Skater.NET
SmartAssembly
Spices.Net
Xenocode
Bottom line, any obfuscation is useful since it makes the task harder and therefore the number of potential attackers less due to skill/time requirements. You can also attempt to write your own obfuscation tools that would prevent someone from just using a tool such as those mentioned above. However, this is similar to saying you could just write your own encryption library. Not a easy task to accomplish without years of experience.
If you are really serious about protecting your software it will require a fair amount of additional work/money from your side since you would need to use multiple methods of protection. E.g. Using a obfuscater, cryptor, packer and then using a solution such as a USB dongle for verification.
If you do find a list comparing the difficulty of solutions to each other, please post it, would be really interesting.