Ingest pipeline - How to stores the split values into separate new fields?

I don't think this is possible with just the split processor. Instead, you can first split into a temporary field, and then next use three set processors to assign the different array elements to the different fields:

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "description": "split words on line_number field",
    "processors": [
      {
        "split": {
          "field": "line_number",
          "separator": "\\.+",
          "target_field": "temporary_field"
        }
      },
      {
        "set": {
          "field": "field1",
          "value": "{{temporary_field.0}}"
        }
      },
      {
        "set": {
          "field": "field2",
          "value": "{{temporary_field.1}}"
        }
      },
      {
        "set": {
          "field": "field3",
          "value": "{{temporary_field.2}}"
        }
      },
      {
        "remove": {
          "field": "temporary_field"
        }
      }
    ]
  },
  "docs": [
    {
      "_source": {
        "line_number": "1.2.3"
      }
    }
  ]
}