I've just begun using custom bone shapes and am finding it very tedious to have to align their location/rotation/scale to the bone after they've been assigned. Is there a quicker more precise way of doing this?
For solving this issue I use a script called orient_custom_shape_V2.py I found here: https://developer.blender.org/F207430
After installing and activating the script in User Preferences select a custom shape as you do normally (Pose Mode -> Bone panel -> Display section). Then you have this new button called Orient Custom Shape beneath the custom shape options. It should bring the representation of your bone to where your custom shape mesh is. Which is what we want.
It works fine for me (v.2.77). Though I know people experienced issues with scale and orientation for some bones using the script.
And as to scale I recommend having bone size equal to one if possible (this should not scale your custom shape at all).
P.S.: Originally this was an answer to this question: How to position/scale custom bone shapes in same position as original mesh?
Put the 3D cursor (ShiftS) on the base of the bone, then add a new object (a cube). Turn on the axis view for both the bone (in pose mode) and the new cube (Obj mode). In object mode, align the cube to the bone on the three axes. In edit mode, move all vertices of the cube until it surrounds the bone. Assign the cube as the bone shape. In object mode scale the cube equal to the bone shape. Last in edit mode rescale the cube mesh as it was when created.
Now you can freely edit the mesh: it will remain the same as bone shape.
This method is useful only for complicated bone shapes, as it is long and tedious; with simple meshes I prefer to get some headache with trial and errors movements.
A SIMPLER METHOD:
create a circle; in edit mode move on a single axis two vertices, to remove simmetry; assign the circle to the bone; in object mode align and scale the object to the bone shape.
Now you can freely edit your circle in edit mode: the bone shape will remain consistent.