Hi,
1) Switching hosts shouldn't be a problem, as long as you have access to your files. Just backup locally and re-upload it to you new host - this shouldn't affect your php code at all (except for some DB credentials)
2) PHP has a lot of great cms. Which suites your needs best you have to evaluate by yourself. Here the usual suspects:
Disclaimer: I wrote my diploma about a project around typo3, but I tested all the cms on the beforehand.
- Typo3 (www.typo3.org) T3 is not easy to start with, but when you get the concepts behind it, it is most likely the most sophisticated open source cms. It is huge in Europe.
- Drupal (www.drupal.org) is aimed on the more "Web 2.0"-ish projects (like Blogs or communities). It is particularly large in the US, and would be my pick if i have to do some "social site"
- Joomla (www.joomla.org) - the cms formally know as Mambo - is a multi purpose CMS - aimed at medium sized websites. I personally didn't liked the handling.
If you have a Java background you should consider looking at Ruby (on Rails) - cake is heavily inspired by rails - or some Python webframework like Django or Zope - because they are more OOP than PHP5, which should help you to make the transition from Java (they are also open source).
3) You could place the files where you want, as long as you make sure to include the path to your php-include-path. The include path is a list of directories where the PHP interpreter looks for files. My typically Zend Setup looks like this:
localhost/
www/ <-- this is the place where the public accessible php, html, js and css files reside - it's the document root
app/ <-- there goes my custom phpcode - it's outside of the document root because of security issues
lib/
zend/ <-- I put the complete framework here
than I set the include-path in my index.php file (lies in www) with
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR
. '../lib');
you could also set this setting directly in the php.ini file (which is a better solution on the performance side) but you often haven't write access to this file on shaded hosts.
for Cake I couldn't tell you, because I haven't done a "real world" project with it.