I know that there are many ways to do it,
That is correct. There is no International Version Number Police, everybody can do what they want, and more or less everybody does do what they want.
but the most common is with numbers and with a length of 3 to 4 digits,
I would disagree. The most common is with numbers, letters, and (abbreviated) words, and a length of 3 to 4 numerical components (which need not necessarily be single digits) and additional alphanumeric components. For example, 220.127.116.119-rc5 is not exactly uncommon to see.
I know what each of the numbers mean in this method,
No, you don't, precisely because "there are many ways to do it".
1. How should be the version of a software released for the first time?
Everybody can do whatever they want. There is no International Version Number Police.
I explain: Many times I have seen software that have as version
0.0.1, so how is this, should all software start from zero?
Every developer can choose whether to call the first version 0.1, 0.0.1, 1.0, or Fred. There is no International Version Number Police.
However sometimes I have seen that the first version of others is
18.104.22.168. I read that there is no universal standard for software versioning
That is correct. There is no universal standard for software versioning.
but I imagine there are things to take into account and that explains why some developers start from
0.1 and others from
Yes, there are things to take into account: one developer likes one way better, another developer likes another way better.
(Unless one of them is doing things wrong).
In order for one of them to do things wrong, there would need to be universal standard for software versioning that both are required to obey, otherwise the term "wrong" doesn't even make sense.
Since there is no universal standard, and everybody can do what they want, neither of them could possibly do things wrong, by definition.
In other cases I have seen that the versions are not totally followed, but for example, one is
1.10, and the next one is
1.15, that is, they do not increase from one or the other, but they do not increase from one to the other.
There could be hundreds of reasons for this. Since every developer can do what they want, they obviously also can skip versions for whatever reason they want.
Maybe they just like the number 15. Maybe 1.11–1.14 had some major security flaws and where thus rescinded. Maybe numbers ending in 5 have some special meaning in this particular developer's versioning strategy.
Some projects have "magic numbers" in their versions. For example, in some projects odd minor numbers are development releases and even minor numbers are stable releases. I.e. 2.11.x would be the x'th development release on the road to 2.12.0. In some other projects, minor numbers above 90 are development releases, i.e. 2.93 would be the fourth development release on the road to 3.0. Some really do get creative, and designate 90–94 as alpha versions, 95–98 as beta versions and 99 as the release candidate. (And then run into problems when there are more than 5 alpha releases, 4 betas, or multiple release candidates.)
2. In case of an independent developer what length is recommended?
The recommended versioning strategy for an independent developer is exactly the same as the recommended versioning strategy for every other kind of project: the one which best fits the project's needs.
I explain: In the number method I saw two common forms which is the 3 digits and the 4 digits, but the fourth one was the "Number of deliveries/revisions", which changes when the product is rejected. That concept gives me to understand that only applies to companies that develop software and does not meet certain parameters, I do not know, then, that for independent developers is better to use the 3 digits mode.
Every developer can choose whatever versioning strategy they want. If you don't like that one, then choose another.
A version number is simply a way to communicate "something" to "someone". You have to figure out what you want to communicate to whom. For example, Semantic Versioning is designed to communicate API compatibility to a machine. On the other hand, "Microsoft 365", for example, is a version number that is designed to communicate a marketing idea to end users.
I apologize if this is a long question, let's concentrate on the numerical method.I repeat, I know there is no standard for this but,
That is correct: there is no standard for this.
I would like to know why there are so many ways of versioning on the internet
Because there is no standard for this.
and which ones are incorrect.
None, because there is no standard for this which could say what "correct" even means.
As mentioned above, Semantic Versioning is a versioning strategy that has become somewhat popular recently. But it is only really useful for versioning libraries, modules, frameworks, etc. that have a well-defined public API.
It is also important to realize that a product doesn't need to have only one version number. The purpose of a version number is to communicate something to someone. If you have more than one thing that you want to communicate and/or more than one audience, then you can have more than one version number.
For example, Windows "Vista" was the "marketing version", but it also has an "engineering version" which is 6.0. Windows "7" was the marketing version, but the "engineering version" was actually 6.1. Windows 8 was 6.2, Windows 8.1 was 6.3, Windows 10 is 10.0 for all versions of Windows 10. So, "Windows 10 Version 1507" has the same version number 10.0 as "Windows 10 Version 20H2", even though they have bigger differences than Windows 8 and 8.1.
Android has a letter, a code name, a marketing version, and an API version. The letter, the code name, and the marketing version are targeted at end users, the API version is targeted at app developers. Ubuntu has a code name and a marketing version, which is actually just the projected release date.