Your web user needs to be able to write and read from /assets.
assuming your web user is www-data, you should either make this user the owner of the files, or you can chmod 777 all folders in assets, and chmod 666 all files (in assets/) excepting .htaccess of course.
The silverstripe-cache folder is actually optional, as silverstripe will use whatever temp dir you have available. However if you have issues writing to a temp folder (such as no write permissions for /tmp) then creating silverstripe-cache will save a heck of a lot of headache. This folder should be 777 also.
Make sure to turn PHP Safe Mode off (and open_basedir too sometimes causes issues, post back about that as it's a bit more invovled).