1. You don't need to do anything. When you login to a new Android phone with your Google account, all your contacts are replicated on the new Android phone. Like magic.
Note: If you own multiple Android phones, all the contacts are automatically synced in real time to mirror each other across the phones.
2. Use Google Sync. Its not an app (except for Blackberry where it does take the form of an app). Basically its a set of instructions to use Exchange ActiveSync to sync it to Google using your Google account. It makes your non Android phone look like you're working for Google and using Google's corporate Exchange servers.
Note: It will be like #1, except using non Android phones. As a matter of fact, if you also own both multiple Androids and non Androids, all these phones will be magically syned and mirrored with each other.
Google Sync for your phone
3. Pictures of your contacts are automatically sync'ed to your Google account as well and to whatever phone your Google account is synced to.
a.) If your contact has his or her unique picture they added to their Google account by themselves.
b.) if the contact is synced to their Facebook, Twitter or Yahoo accounts in which case the picture reflects their social networking avatars.
c.) You can add the pictures manually using your phone, or go to your PC desktop and open your GMail with your browser. You will see your contacts there. Click on a contact and copy and paste a picture to that portrait. Anything you put into your Google account will be synced to the phones (see #1 and #2).