In terms of code, you can say nothing – you can create a full-fledged plugin in the theme. But in terms of logic – everything! The task of the plugin, add something new to the site, for example to add a poll. The task of the theme – the output of the content, including that poll…
So, the theme is responsible for displaying content on the page, and the plugin is needed to implement the functionality of the site.
Never add functionality to the theme itself, unless there’s a good reason to do so. If you do, the functionality will be lost in place of the theme when you change it. For example, your theme has a cool photo gallery. And if you change the theme, that cool photo gallery will be lost…
So any functionality related to editing/adding site content should be designed as a plugin.