The main difference between these protocols is how they associate and store data about asset ownership. Colored coins at least as implemented by Coinprism, put data in the form of a transaction output that must be retained in later transactions involving the associated standard transaction outputs (spending money). If a colored coin is handled by a wallet which is not colored-coin aware, the output containing data would not be reproduced and the colored coins involved would be lost.
Counterparty takes a different approach in that all of the ownership, issuance, order, betting and other data is stored in the blockchain with no relationship between money spending bitcoin outputs and the existence of such data. Instead, each counterparty transaction adds data to the global counterparty history. If your address has 500 FOO tokens, it will continue to have those tokens until a counterparty transaction is signed by your address that sends them somewhere else.
The model Counterparty uses, makes it possible to do things like locking the issuance of a token so no more can be created in the future.
Another fundamental difference is that colored coins use the 40-bytes available after an OP return whereas Counterparty encodes its data in the form of additional multisig addresses. Each allows spent bitcoins to be reclaimed but Counterparty can store more data in this way as long as Bitcoin's fee structure and mining community allow it.
In regards to how many xcp the developers control, that is unknown but is related directly to how many bitcoins they burned during the 30-day proof-of-burn period. At that time ~2100 bitcoins were destroyed to create 2.6 million xdp.
Colored coins would basically need to restart itself under a new model to copy what Counterparty is doing including its own solution to the initial distribution of a valuable, native XDP-like token.