Recently i found a block but cgminer did not report it. I have found blocks before with getwork and i was able to see Found block count > 0 matching the actual found blocks reported buy bitminter
Maybe this is a bug in cgminer. Or if you have multiple workers, did you check them all?
1. Mining software knows that it shall shall submit work only if its matching difficulty (let say 4).
2. Mining software shall check if valid shares which are less that required difficulty solve the block
You mean above the required difficulty to solve the block. Above difficulty = below target.
3. If yes they shall be submitted to the pool even though they are not matching pool difficulty
The difficulty given by the pool (1-4096 currently) will always be lower than the difficulty for creating a block (currently 3.6 million).
Even if the mining difficulty was not capped (currently at 4096) you would still need a worker with a hashrate that would produce 20 bitcoin blocks per minute on average, for the server to give you a mining difficulty that is higher than the difficulty to create a block. If you receive enough ASICs for that then I recommend splitting them up over multiple worker accounts, at least until the network difficulty goes up.
What i am asking is are any potential issues from both miner and pool if a share solving the block can be rejected by the pool or not sent by software?
It could be a potential problem if you added a new worker that had 200 times the hashpower of the rest of the network. So if the current network hashrate is 30 TH/s and you add hardware doing 6000 TH/s on a single worker account, then we need to look into it. In that case, please let me know in advance.