This question already has an answer here:
Right now, we have one accepted version of Bitcoin (the software) and most miners and full nodes are using some versions of that.
However, what can very well happen is some split within Bitcoin developers over some detail - say, halving time, block size, minimal fee, better hashing/encrypting algorithms after some successful cryptographic attack, you name it. (It happens with open source projects.)
Imagine this happened and there were two "versions" of bitcoin, that accept different blocks as valid - for the worst case scenario, imagine that the sets of valid blocks are suddenly disjoined (what is accepted for one version is not for the other). And for the worst case scenario, imagine that the distribution between both miners and full nodes is 50:50.
What exactly would happen? How exactly would the problem "resolved itself"? If we assume that regular transactions (not the mining ones) are sent between both of the versions, what would happen with them?
(Sorry if this question seems too theoretical, but I personally can see this hapenning.)