Yes, this is all possible and is actually what we do with our medical application.When you create a file group, you can use a wildcard which will change with the name provided for a database. This is actually done by default, but this is how you can have as many different databases deployed to the same server through the same package with a different name. You just have to supply the deployment name. You can do this programmatically or through the standard pre-built dialogs. To have the file group rename itself with the database name you supply at run-time, use the $DbName$ wildcard:
As for executing a profile script for a database that doesn't exist, just use the master database and then you can use your profile code to either set a database or execute on a database just as you would for any other SPROC.