Update all rows when sort/ordering value is changed for single row?
I've never handled anything like this before but why not do a combination of the +1 and the decimal versions.  Do the decimal versioning while they are editing .. then at the end of an editing session (when they do a final save) go ahead and re-write all of the values as integers.  Presumably in any given editing period there won't be so many edits that you will run into major problems with precision.

Another option would be to use a list in a single column in say the project table.  Basically have your IDs listed there along these lines.

,43,23,14,55,27, etc.

Then you can use string manipulation to remove ,55, from where it is and stuff it between 23 and 14.  In SQL Server the T-SQL code might look like this:

DECLARE @OrderString varchar(500) = ',43,23,14,55,27,'
DECLARE @MoveString varchar(50) = '55'
DECLARE @MoveBefore varchar(50) = '14'

-- Remove the value to be moved
SET @OrderString = STUFF(@OrderString, PATINDEX('%,'+@MoveString+',%', @OrderString), LEN(@MoveString)+2,',')

-- Put it in the right place
SET @OrderString = STUFF(@OrderString, PATINDEX('%,'+@MoveBefore+',%',@OrderString),0,','+@MoveString)

-- Print it out
PRINT @OrderString