You can use pandas replace function. Define in a dictionary, what you want to replace and substitute the words in your new column:
import pandas as pd
#test data
df = pd.DataFrame(["Wood", "Wooden", "Woody Woodpecker", "wood", "wool", "wool suit"], columns = ["old"])
#dictionary for substitutions
subst_dict = {"Wood": "Wooden", "wool": "soft"}
df["new"] = df["old"].replace(subst_dict)
#output
old new
0 Wood Wooden
1 Wooden Wooden
2 Woody Woodpecker Woody Woodpecker
3 wood wood
4 wool soft
5 wool suit wool suit
Though for more complex substitutions utilising regex, it might be a good idea to write a function and use your apply() approach.
Update after changing the requirements:
If you want to match only whole words in phrases, you can use regex:
import pandas as pd
#test data
df = pd.DataFrame(["Wood", "Wooden", "Woody Woodpecker", "wood", "wool", "wool suit", "Wood is delicious", "A beautiful wool suit"], columns = ["old"])
#dictionary for substitutions
subst_dict = {"Wood": "Wooden", "wool": "soft"}
#create dictionary of regex expressions
temp_dict = {r'(\b){}(\b)'.format(k) : v for k, v in subst_dict.items()}
#and substitute
df["new"] = df["old"].replace(temp_dict, regex = True)
#output
old new
0 Wood Wooden
1 Wooden Wooden
2 Woody Woodpecker Woody Woodpecker
3 wood wood
4 wool soft
5 wool suit soft suit
6 Wood is delicious Wooden is delicious
7 A beautiful wool suit A beautiful soft suit