How to make rig that reacts to gravity or seem to behave physically correct?
How to make a cloth sim rig

The trick is getting the bones of your armature to follow the vertices of your cloth mesh. This can be achieved by parenting Empties to the verts and then setting those Empties as IK targets.

1. Make a mesh and give it a Vertex Group for cloth Pinning

The mesh is extremely simple - just a chain of edges, made in the shape you want your armature to be in its rest position.



Assign a vertex weight of 1 to the base vertex because the cap needs to stay pinned on the head and not fall off. Assign less and less vertex weight as the vertices get further from the base and closer to the tip. My cloth object has only three edges and four verts, so I assigned weights of 1, 0.5, 0.33, 0.15 (from base to tip). Pinning the cloth object with weights allows the hat to be more cloth-like in some areas (the tip) and more rigid in others (the base).

Add a Cloth Simulation to this mesh object. 

In the Cloth Sim settings enable Pinning and choose your "Pinning" vertex group.



Play your scene's animation to check that the movement of this skeletal "cloth" is alright. Grab and rotate the object while animation is playing to see the effect.

2. Add Empties and parent them to the cloth's vertices

Add an Empty for each vertex except the base one. Use Snapping (ShiftS) to position them exactly where the vertices are (while in their rest position, frame 1).

If you want to change the Display Size of your Empties this can be done from the Empties Context. 

First select an Empty, then Shift-select the cloth object, Tab into Edit Mode, select only the vertex that is to be the parent, and press CtrlP to make it a Vertex Parent. Repeat this process for each Empty. The location of the vertices now determines the location of the Empties.



3. Add an armature

Create a bone for each Edge of the cloth object's mesh. Snap the roots and tips of each bone to the vertices of the cloth object.

4. Add an IK Constraint to each bone

In Pose Mode select a bone and then click the Add Bone Constraint drop-down button to choose Inverse Kinematics. Set the Target for the IK Constraint to be the Empty which lies at the tip of that bone. Set the Chain Length to 1. Repeat this process for each bone.



Test your animation again and make sure the bones of the armature are moving with the cloth object.

You should have a rig that looks something like this:



5. Model the hat if you haven't already, and do some parenting

Parent the hat object to the Armature and choose Automatic Weights.

Parent the Armature and the cloth object to the character's head so that they will move with it.

Adjust the hat's vertex weights in the Weight Paint Editor if necessary.

End result: