1) I didn't have to open any ports for Skype. Why do I have to do it for Viber?
Because it doesn't work the same way Skype does. That's how their protocol is designed, there's nothing to do about for you as an user.
2) How can I open the ports for all my devices at home? My router requires me to specify a target device when I go to configure custom ports. Again, Skype doesn't have this problem.
You can't. When you're for example browsing Super User, it's your PC that connects to SU servers and the server's response is routed to your computer. But when it's some external computer that tries to initiate the connection, it doesn't know your internal network layout so it's just talking to your router. But the router doesn't know to which computer the server is trying connect, so it just refuses to set up the connection. That's what port forwarding is for: you're telling the router to route all connections on specified port to a given local IP. That's also why you can't route them to multiple devices: incoming connections always have one target and once again, your router won't be able to guess which one is the correct one.