There are differences between Hugs, Yhc and GHCi? If there are differences, What are they?
They are all just different implementations. I would try and explain the differences but this article does a much better job.
Usually people use Hugs for small, testing-type prototypes (analogously to how Ruby users would use irb and Python users would use the interpreter), but for actual shipping code, GHC is by far the most popular target (analogous to how Python users would compile import modules to cpython).
They're all pretty much standards-compliant, its a matter of speed of performance vs speed of compilation.
(Dunno much about Yhc)
First: you want GHC/GHCi. And you want it via the Haskell Platform. Then, for more info on the other implementations of Haskell, read Bartek's link.
These days people kind of converge to using GHC, as it's the de facto standard.