In general, you can do surprisingly complex things with the Arduino (evenmoreso with the mega). As for interfacing, it depends on the sort of external device you're talking about.
Some things that one might call "external devices" are things like sensors and relays, the kind of stuff that's often available on shields. These can be interfaced to directly, with or without a shield. (Not everyone uses shields, but they're very convenient if you're new to Arduino). Monitoring ambient conditions via sensors, spoofing the IR remote control to turn your TV on, turning things on and off, and driving piles of individually addressable LEDs is real easy.
If you need to interact with anything else connected to a home network, you can do that using the Ethernet shield. Sadly, it's rather pricey. Also, there's the new Yun, which has connectivity built-in - also pricey. There's also a really exciting new WiFi chip out, the ESP8266 - but it's brand new and designed in china, so the firmware and library support is in a truly primitive state. When that advances to a usable state, it'll be great, cause they're super cheap.
If you need to interact with something that requires major computation, well, that you'd involve a computer for, likely communicating over serial.