I have used Asterisk for 10+ years, both at home and at work. It's great, but does have it's foibles. As everyone else has mentioned, to roll your own at home from a bare install, is a painful learning experience, fun though, if the only thing you are concerned about is ordering a pizza when you finally make your first real test call. Also, as has been mentioned, never let it loose on the open internet as it will cost you. WHEN, not if, it gets hacked
After learning how to make Asterisk work, I decided that it was too involved to go the bare install route and after having tried lots of different wrappers, I finally settled on Elastix, been using it pretty much since. It is essentially built upon FreePBX and just works. I haven't seen a feature yet that I wanted that I couldn't add or that wasn't already rolled in to it.
More recently I have been playing around with Freeswitch, which I like a lot and is pretty darn good, it's certainly less resource intensive, but like Asterisk, has it's own issues and until I find ways of making it reliable for me, I'll be sticking with what I have. It is not as intuitive to use either, at least I don't think so, as Elastix or FreePBX etc and requires more learning.
If you plan to use your old preexisting handsets, a cheap fxs card from China will get you there, or as has been suggested, use a SIP adapter, of which there are plenty. I like the Cisco SPA's personally.
For phones I use Cisco or Grandstream endpoints whenever I have the choice and use Cisco handsets exclusively at home.
If you use a TDM card of any kind, be careful if you run your PBX in a VM. Timing is critical here and can cause you all manner of headaches. I would go as far as to say the best plan, in that circumstance, is to run your PBX on bare metal. If you are doing SIP only and do not need Analog at all, then running in a VM is perfectly usable
Have a go compiling your own Asterisk PBX and get it working properly, what you'll learn from doing that is invaluable. Then try as many different distributions as you can and when things don't work quite as expected, you will know where to look in the config files to fix it. Either way, it's a journey