What is a Juju Charm? What is it used for?
From juju package description:
So, a charm tells juju how to manage a service. Examples of a service may be "mysql database" or "wordpress". After a service is deployed, juju can define relations between them ("worpress needs mysql") and expose some services to the outside world.
It's a set of scripts that can be written in any language that fire off hooks based on certain things. So the "install hook" is the first thing that will be run on an instance when juju installs on it, and we can do hooks to other services.
The charm usually includes all the intelligence needed to scale the service horizontally. So, for example, the charm for clustered MySQL would know how to add machines to the cluster, preserving the relationships with all the services depending on that service. This lets you build out, and scale up and down, the service you want, especially on the cloud.
Juju can also be used together with Orchestra for physical deployments. So, for example, if you have a charm for Hadoop, you can use that to install Hadoop across a few thousand servers with Orchestra.
You can get some more info from Juju user tutorial
Juju is a service orchestration tool for the cloud. Billed as "DevOps Distilled", it's a tool designed to help allow for consistent and reliable deployments of services to a cloud provider. Commonly likened to as "apt-get for the cloud" Juju achieves this goal by using charms which are essentially the building blocks, the containers of all the instructions on how to not only deploy, install, and configure a service but how that service relates to other services in the cloud.
You can install the Juju client on a number of platforms, it's not limited to any one edition of Ubuntu. So you can install juju on your Ubuntu desktop, Mac OSX, and other platforms with support for more platforms coming soon.