How asset works depends on now you configure it. Assuming you have the same folder structure locally and on your server, the result should be the same.
If you configure "/assets" as your asset path, assets are expected to be in "./public/assets/...". Given your code snippet, it will look for the logo file in "./public/assets/img/site/logo/".
It might have to do something with the "foo" in your example, indicating you have a non-standard installation?
So it wlll prrobably depend on what "foo" exactly is, and how you have implemented it (also related to your statement "the page is called in a folder" which I don't understand. Fuel doesn't have pages, it only has an index.php).
Asset doesn't do anything with URL's, it uses the base it is being given when it is instantiated, through the config value 'url'. It also uses the global config value "base_url" to contruct the full URL to the image, so my guess is that that may be wrong.
Different way of installation? mod_php vs fgci? Different location of installation (i.e. in a folder instead of in the docroot)? Hardcoded base_url in your config file?
URL in the asset config file should be a relative URI, so use "/" when you gave manually configured a base_url in your config.php file, or don't define it at all when your base_url is auto detected.
Now you've made it into an absolute URL, which makes Asset believe assets are on a different server from your application, something with uses different logic in the Asset class.