Is there a way to setup a paid event which is free for members? Is CiviDiscount necessary for this?
There are other ways, but using civiDiscount is by far the simplest way (you need to do a bit of coding yourself otherwise as far as I know.) You Just set up a 100% discount to automatically apply to to your event based on a contact having a current membership. I've set it up so that certain event types always have this discount, it is quite straight forward once you see the interface. The "bad" thing about doing it this way is even when a member is signed in they are presented with the price of the event initially, only once they press the register button is the discount applied.