4. I see cgminer adjusts miners difficulty by its hashrate,
CGMiner doesn't adjust the difficulty, the pool does.
Pools in general do this to limit bandwidth and load on the pool. The solo pool does this to give feedback to miners that they are really mining. It seems miners these days don't believe the hash rate their miner is telling them so they tend to want the feedback from the pool as a verification.