Long answer: saving the session (which happens automatically) will always set a cookie. On a request, you can choose to pass the contents of the cookie in a GET or POST variable instead of using a cookie.
This mechanism is used for example when you use swf uploaders, that can't use a cookie...
Can you point to documenation that shows how PHP native sessions work without a cookie?
Sessions are to maintain state in a stateless environment. That means that no matter how you look at it, you have to pass some sort of unique key (the session id) back and forth in every request and response.
As I wrote earlier, Fuel's session class has support for both GET and POST variables, so passing the session ID as a URL parameter (which is a GET variable) is not a problem at all.
when you use POST, you need to set the "post_cookie_name" configuration value.
The reason this doesn't use the cookie name is that often you want to use POST in combination with cookies (for example if you use certain file uploaders), and want to use a fieldname different from the cookie name.
You are absolutely right, don't know where that went.
It's not that dangerous, first the have to guess (or steal) the session id hash, and once they have a valid one, get passed all security checks that are done server side (on IP and user agent for example).
But perhaps it's better to check alternative sources only if no cookie was found?