If you take a look inside one of these folders, you'll usually see a language folder, like "en-US", and an "images" folder. While it's important to adhere to language conventions, you have latitude with the existence and naming of both of these folders. For example, your source code will reference image files by location. In fact, in some Gadgets you'll see images dumped into the root of the Gadget folder, while others may have more extensive organization.
In the language folder you'll find the one file all Gadgets require, the Gadget manifest: gadget.xml. This manifest names your primary Gadget file, such as "main.html". This primary file in turn names any flyout and setting files you may have. Here's what the DevX gadget manifest looks like:
<?xml version="1.0" encoding="utf-8" ?>
<gadget>
<name>DevX Destination.NET RSS Gadget</name>
<namespace>DevX.Gadgets</namespace>
<version>1.0</version>
<author name="Justin Whitney">
<logo src="images/destnetlogo.jpg" />
<info url="http://www.devx.com/MicrosoftISV/Door/6421?trk=MSdestdotNET"
text="Destination.NET" />
</author>
<copyright>
Copyright© 2007
</copyright>
<description>Features, Live Events, Webcasts, Downloads, and more from
DevX Destination.NET</description>
<icons>
<icon width="64" height="64" src="images/destneticon.jpg" />
</icons>
<hosts>
<host name="sidebar">
<base type="HTML" apiVersion="1.0.0" src="main.html" />
<permissions>Full</permissions>
<platform minPlatformVersion="1.0" />
<defaultImage src="images/dragicon.jpg"/>
</host>
</hosts>
</gadget>
"Flyouts" literally fly out from the side of the Gadget based on an event in the Gadget, giving users additional information or functionality. You can use a single HTML file for flyouts or swap out between multiple files, though only one can be displayed at a time. "Settings" appear when users click the Settings button on the side of your Gadget. While intended to give users access to variables at the application scope, you can also use it to display "About…" information or non-"setting" functionality. Both flyouts and settings are optional and will only appear if you've coded for them. So at the bare minimum, a Gadget will include one folder, the .gadget folder itself, and two files: your Gadget manifest, specifically named "gadget.xml", and your Gadget source, referenced within the manifest.
MSDN has a great walkthrough on building a basic Hello, World Gadget. It also touches on accessing System information and taking advantage of Gadget-specific elements, though I won't get into either of those here.