Efficient ... hard to say. Depends on what URLs your starting with. Better in the long run? I think so, since it means once you've gotten them redirected, you don't have to worry about it and can go forward with modern URLs.
Basically you make a 301 redirect in .htaccess. You can even make the URLs 'the same' - like if you have today domain.com/about.html, make a page called 'about', make sure it has that as it's SLUG (that which is translating your dots to dashes right now) and then just toss this in your .htaccess:
RedirectMatch 301 (.*)\.html$ http://www.example.com$1
That will send all whatever.html to just plain 'whatever' and you're done.
The setup is a pain, but once you've got it down, you're done.