No, the connection string that you'll be using in your connection to the resource can have remote connections included in it. So, that your data can be present at any place, you can connect to it by providing an IP address for the server where to get the data from. You can get the connection string for you Database at,
http://www.connectionstrings.com/[
^]
Secondly, since this is a desktop application, you will need to add a few assemblies, or should I say, all of the dependencies in the package. Use the Solution 1 to extract all of the required assemblies. You just need to use the third-party assemblies or the ones you just created. The .NET assemblies would be present there already so you don't need to ship those. So, just the .dll files that you need must be shipped in order for your program to execute without any problem.
I have never worked with Crystal Reports, but if Crystal Report requires a dll file, then yes. You need to ship that dll too on the client system.