When an Editor edit the content item, new version gets created in that particular language. Once editing is complete and the content item is approved through the workflow process, it gets published on the live.
Second, When an Editor creates a new item, Sitecore creates a new version in draft workflow state.
Third, You can customize the publish behaviour through pipeline events and add your custom publishing logic there.
Event Configuration:
<event name="publish:begin" >
<handler type="Sitecore.Custom.Pipelines.CustomPublish, WebSite" method="OnPublish"/>
</event>
Event Code:
namespace Sitecore.Custom.Pipelines
{
public class CustomPublish
{
public void OnPublish(object sender, EventArgs args)
{
// Your custom logic goes here
}
}
}
Hope this helps!