Flooring cost calculator
Separation of concerns

You are mixing user interface and calculations: you should declare function for processing data and doing calculations and other functions to print pretty output. labor() handles both claculating and outputting.

Globals should be avoided

A function should be considered a black box with no knowledge about the outside world, function should never use global variables, because it is hard to mentally keep track of the value of all the global variables. Consider making sqft an argument of labor.

Functions are different from go to

def should_i_stay():
    if answer in move_on:
        program()


So you are basically jumping from one point in the code to an arbitrarly past point in the code. Functions should not be used this way (see above).

User interface

You should strive to offer the best interface possible to the user, your code has several User Interface flaws:


There is no space between the question and the space where you must input, this fells awkard.
Bad input ends the programme immediately or shows a scary error message:


:

This program will help you find the cost of floor covering

What is the cost of the tile per square foot?about 10 dollars
Traceback (most recent call last):
// Omitted for brevity 
decimal.InvalidOperation: [&lt;class 'decimal.ConversionSyntax'&gt;]


you should learn about exception handling to make the input more reliable.

Best practices


You are using a magic number 20 in your labor function. A magic number is a number with no explanation whatsoever why you chose it over another.
Do not use from module import *, it will give people (even yourself in the future) problems figuring out where the functions used are taken from and may generate name clashes.
Use an if __name__ == '__main__' guard so that you can import your code in other files.
Global constants should be declared at the start of the file and be ALL CAPS:


:

EXIT_PROGRAM = ["q", "Q"]

MOVE_ON = ["y", "Y"]

MORE_INFO = ["n", "N"]