Well, first, thanks a lot for this detailled answer !
I for sure have some trouble with some basics features of Unity, like the instantiation of the prefab for example. I checked almost all the tutorial on their website but, heh, you gotta make some mistakes at one point. Thanks for this tip.
My Update() function is checking the screen size to resize my grid in case of a resolution change, because I realized that changing the screen sized at runtime did not resize my grid like I want (based on the screen width). It's a pretty basic thing, the "magic numbers" are simply the proportion I want my UI to have (as soon as you start to work with graphic artists and 2D drawing for the UI, you will never have plain simple values). For example, I want my grid cells to have a widht equals to the screen width divided by 2.2. I just need to round up the results to avoid floating point values.
The UI is pretty dynamic, and I prefer to separate all the dynamic parts into different UIPanel : The screen, the ressource bar on the top right (with dynamic values), the scrollview, and each "file" (my prefab).
Maybe it's not the right thing to do, but it seemed more natural to use the UIPanel as a container. Plus, I saw you writing somewhere that for dynamic elements UIPanel was useful : it would reload/refresh only its content, and not redraw the whole screen (as far as I understood it).
What I don't really understand is the Grid pivot thing. as you said, the Top option should put half the content on the left, and half on the right. Combined with a "Top" content origin on my Scrollview, I don't really undestand why I don't have a perfectly centered grid automatically. I guess I'll have to reposition everything by my self then, but it seemed pretty overkill for something like this.
I'm still a bit troubled about the 1 element case. I understand that the grid is only positionning stuff, so in that case I just need to reposition the element by myself but, well, if in the end I need to reposition so many things by hand, I'm going to end up doing the same thing I was doing with GameClosure : everything by hand. I guess I was expecting a bit too much from Unity in term of simplicity (WYSIWYG and all that stuff).
Thanks a lot for your answer, it really helps Unity beginners like me.
Edit : Don't take me wrong, I think that NGUI is a wonderful tool, especially compared to what is done about GUI in Unity for the moment. But I was not expecting small problems like those one to slow me down so much : my goal was to re-implement the UI of the game as fast as possible, and then focus on more important things. And those small problems, when you are not used to Unity nor NGUI, can take a tremendous amount of time, just to figure out what's going wrong (i.e, the ResetPosition() of my scrollview not working correctly).