My Domain and API endpoints
Enabling My Domain is additive - your existing endpoints will continue to work - you can use either na1.salesforce.com
or mynewname.my.salesforce.com
in API endpoints just fine.
Having said that, best practice is to avoid hardcoding the instance wherever possible. Apps should retrieve the instance from the SOAP login result or OAuth data. The reason for this is that, very occasionally, Salesforce needs to move a customer from one instance to another, and those na1-style references break. Of course, My Domain insulates you from this, since we would just point the My Domain at the new instance.
(Of course, there are always edge cases where you need to hardcode an instance name, and @techtrekker gives good advice in his answer - grab as much as you can via the IDE or Migration Tool and grep for matches).
When setting up MyDomain you can choose to prevent login from login.salesforce.com
As long as you don't enable this you can still login via login.salesforce.com and follow the redirect that you receive in the authentication response .
MyDomain is usually rolled out to support SP Initiated SSO. Are you also rolling out SSO ?
https://help.salesforce.com/HTViewHelpDoc?id=domain_name_app_url_changes.htm&language=en_US
There isn't an automated way to search for hard coded references. However you can do a search across your code base either via the IDE or the Developer Console for hardcoded references.
Also when setting up My Domain you can configure redirects with or without warning so that older URLs that may be bookmarked redirect to the new My Domain URL.