Q:

Separate config file and split the key collects in own file

A new update has to this plugin, has made it so all "quests" have to be in a separate file. Because there is over 100+ I don't want to do it manually. Old file ("config.yml") looks like this: "quests.{questname}.{attributes}" {attributes} as every key that belongs to the current quest. The new file should have the {questname} as name and contain attributes inside. This should be done for all files.
config.yml (old file)
quests:
  farmingquest41:
    tasks:
      mining:
        type: "blockbreakcertain"
        amount: 100
        block: 39
    display:
      name: "&a&nFarming Quest:&r &e#41"
      lore-normal:
      - "&7This quest will require you to farm certain"
      - "&7resources before receiving the reward."
      - "&r"
      - "&6* &eObjective:&r &7Mine 100 brown mushrooms."
      - "&6* &eProgress:&r &7{mining:progress}/100 brown mushrooms."
      - "&6* &eReward:&r &a1,500 experience"
      - "&r"
      lore-started:
      - "&aYou have started this quest."
      type: "BROWN_MUSHROOM"
    rewards:
     - "xp give {player} 1500"
    options:
      category: "farming"
      requires:
       - ""
      repeatable: false
      cooldown:
        enabled: true
        time: 2880

What I have done is looping through every "quest" in the data, which creates an "outfile" located in "Quests/quests/{questname}.yml" with the quest' attributes. However, I can seem to get it to work, getting a "string indices must be integers".
import yaml

input = "Quests/config.yml"

def splitfile():
    try:
        with open(input, "r") as stream:
            data = yaml.load(stream)
            for quest in data:  
                outfile = open("Quests/quests/" + quest['quests'] + ".yml", "x")
                yaml.dump([quest], outfile)
    except yaml.YAMLError as out:
        print(out)

splitfile()

Loop through every "quest" in the data, which creates an "outfile" located in "Quests/quests/{questname}.yml" with the quest' attributes.

A:

The error comes from quest['quests']. Your data is a dictionary with one entry named quests:
for quest in data:
  print(quest) # will just print "quests"

To properly iterate in your yaml, you need to:

get hold of the quests dictionary, using data["quests"]
for each entry in the quests dictionary, use the entry key as filename and dump the entry values in the file.

Here is a patched version of your script:
def splitfile():
    try:
        with open(input, "r") as stream:
            data = yaml.load(stream)
            quests = data['quests'] # get the quests dictionary
            for name, quest in quests.items():  
                # .items() returns (key, value), 
                # here name and quest attributes
                outfile = open("Quests/quests/" + name + ".yml", "x")
                yaml.dump(quest, outfile)
    except yaml.YAMLError as out:
        print(out)

splitfile()

