My french version is on root.
My eglish is then pointed to /en/ folders with polylang settings.
However, root and /en/ are the same pages..? For example, /portfolio and /en/portfolio are the same pages. I had to create /en/portfolio-2 for the english... frustrating, is this normal ? Also, /portfolio-2 in root also is english... confusing !
http://wordpress.org/extend/plugins/polylang/
Yes. This is how Polylang works. It does not need the /en/ to know your page is English (it needs it only for archives). The /en/ is optionnaly added for people who want it but it is not used. And thus, a current limitation is that you cannot have the same slug for the same page in two different languages.