Background graphics tend to be the largest 2D graphics in any app. They can take up a lot of room and make an app overloaded. On my most recent project I tried to create graphics that could be changed and modified in many different ways with very few graphics to create a variety of backgrounds.
For these backgrounds I created a painted texture that can be layered over a single color to create a painterly, watercolor look. I then created tileable patterns to layer on top to add even more variety.
The goal when creating 2D UI is to make graphics that can be repurposed and resized to fit many different circumstances. When creating a button I want it to be easily adapted, to achieve this I often create buttons with several graphics that I layer over each other. All graphics can be created in white and then programmatically recolored. I tend to work in Unity 3D with the plugin 2D Toolkit in which I can easily layer the button graphics and recolor them to my liking.
This is an example of a recent button I created for a preschool educational app.